Spring - Boot In Action

@CacheEvict(value = "users", allEntries = true) public void clearCache() { } } Scheduled Tasks @Configuration @EnableScheduling public class SchedulingConfig { } @Component public class ScheduledTasks {

@ExceptionHandler(UserNotFoundException.class) @ResponseStatus(HttpStatus.NOT_FOUND) public ErrorResponse handleNotFound(UserNotFoundException ex) { return new ErrorResponse(ex.getMessage()); } } @Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**") .allowedOrigins("http://localhost:3000") .allowedMethods("GET", "POST", "PUT", "DELETE"); }

@MockBean private UserService userService;

@CacheEvict(value = "users", key = "#user.id") public User update(User user) { return userRepository.save(user); }

@Scheduled(initialDelay = 10000, fixedRate = 30000) public void fixedRateTask() { } } @Configuration @EnableAsync public class AsyncConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(5); executor.setMaxPoolSize(10); executor.setQueueCapacity(100); executor.initialize(); return executor; } }

myapp: custom-property: value @ConfigurationProperties(prefix = "myapp") @Component public class AppProperties { private String customProperty; private EmailConfig email = new EmailConfig(); // getters/setters @Data public static class EmailConfig { private String host; private int port; } }

public void publish(Order order) { rabbitTemplate.convertAndSend("order.exchange", "order.created", order); } }