Guia rápido das anotações do Spring @Enable
1. Visão geral
A primavera vem com um conjunto de@Enable annotations that make it easier for developers to configure a Spring application. Essas anotações sãoused in conjunction with the @Configuration annotation.
Neste artigo, veremos algumas dessas anotações:
-
@EnableWebMvc
-
@EnableCaching
-
@EnableScheduling
-
@EnableAsync
-
@EnableWebSocket
-
@EnableJpaRepositories
-
@EnableTransactionManagement
-
@EnableJpaAuditing
2. @EnableWebMvc
A anotação@EnableWebMvc é usada paraenabling Spring MVC in an applicatione funciona importando a configuração Spring MVC deWebMvcConfigurationSupport.
O equivalente XML com funcionalidade semelhante é<mvc:annotation-driven/>.
A configuração pode ser personalizada pela classe@Configuration implementando oWebMvcConfigurer:
@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(
List> converters) {
converters.add(new MyHttpMessageConverter());
}
// ...
}
3. @EnableCaching
A anotação@EnableCaching capacidadeenables annotation-driven cache management dentro do aplicativo eallows us to use the @Cacheable and @CacheEvict annotations em nosso aplicativo.
O equivalente XML com funcionalidade semelhante é o namespace<cache:*>:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(
Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
}
Esta anotação também possui as seguintes opções:
-
mode - indica como o conselho de cache deve ser aplicado
-
order - indica a ordem do consultor de cache de execução quando aplicado em um ponto de junção específico
-
proxyTargetClass - indica se os proxies baseados em subclasse (CGLIB) devem ser criados em oposição aos proxies baseados na interface Java padrão
Esta configuração novamente pode ser personalizada pela classe@Configuration implementando a classeCachingConfigurerSupport:
@Configuration
@EnableCaching
public class CacheConfig extends CachingConfigurerSupport {
@Bean
@Override
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(
Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
@Bean
@Override
public KeyGenerator keyGenerator() {
return new MyKeyGenerator();
}
}
Para obter mais informações sobre como usar o cache do Spring, você pode consultar estearticle.
4. @EnableScheduling
A anotação@EnableSchedulingenables scheduled task capabilities and allows us to use @Scheduled annotations no aplicativo. O equivalente XML com funcionalidade semelhante é o namespace<task:*> usando o atributoscheduler.
Esta configuração novamente pode ser personalizada pela classe@Configuration implementando a classeSchedulingConfigurer:
@Configuration
@EnableScheduling
public class SchedulingConfig implements SchedulingConfigurer {
@Override
public void configureTasks(
ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
}
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(100);
}
}
Para obter mais informações sobre como usar o agendamento Spring, você pode consultar estearticle.
5. @EnableAsync
A anotação@EnableAsyncenables asynchronous processing in our application. O equivalente XML com funcionalidade semelhante é o namespace<task:*> usando o atributoexecutor.
@Configuration
@EnableAync
public class AsyncConfig { ... }
Para obter mais informações sobre como usar Spring async, você pode consultar estearticle.
6. @EnableWebSocket
A anotação@EnableWebSocket é usada paraconfigure the processing of web socket requests. A personalização pode ser feita implementando a classeWebSocketConfigurer:
@Configuration
@EnableWebSocket
public class MyConfiguration implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(echoWebSocketHandler(), "/echo").withSockJS();
}
@Bean
public WebSocketHandler echoWebSocketHandler() {
return new EchoWebSocketHandler();
}
}
Para mais informações sobre como usar Spring Websockets, você pode consultar estearticle.
7. @EnableJpaRepositories
A anotação@EnableJpaRepositoriesenables Spring Data JPA repositories examinando o pacote da classe de configuração anotada em busca de repositórios.
@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }
Algumas opções disponíveis para esta anotação são:
-
value - alias para o atributobasePackages()
-
basePackages - pacotes de base para procurar componentes anotados
-
enableDefaultTransactions - configura se deve ou não habilitar transações padrão para repositórios Spring Data JPA
-
entityManagerFactoryRef - configura o nome da definição de beanEntityManagerFactory a ser usada
8. @EnableTransactionManagement
A anotação@EnableTransactionManagementenables Spring’s annotation-driven transaction management capability. O equivalente XML é o namespace<tx:*>.
@Configuration
@EnableTransactionManagement
public class JpaConfig { ... }
Para obter mais informações sobre como usar o Spring Transaction Management, você pode consultar estearticle.
9. @EnableJpaAuditing
A anotação@EnableJpaAuditingenables auditing on your JPA entities.
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware auditorProvider() {
return new AuditorAwareImpl();
}
}
Para obter mais informações sobre como usar Spring Web Sockets, você pode consultar estearticle.
10. Conclusão
Neste artigo rápido, vimos algumas anotações Spring de@Enable e como elas podem ser usadas para nos ajudar a configurar um aplicativo Spring.