Guide rapide sur les annotations Spring @Enable
1. Vue d'ensemble
Spring est livré avec un ensemble de@Enable annotations that make it easier for developers to configure a Spring application. Ces annotations sontused in conjunction with the @Configuration annotation.
Dans cet article, nous allons examiner quelques annotations:
-
@EnableWebMvc
-
@EnableCaching
-
@EnableScheduling
-
@EnableAsync
-
@EnableWebSocket
-
@EnableJpaRepositories
-
@EnableTransactionManagement
-
@EnableJpaAuditing
2. @EnableWebMvc
L'annotation@EnableWebMvc est utilisée pourenabling Spring MVC in an application et fonctionne en important la configuration Spring MVC à partir deWebMvcConfigurationSupport.
L'équivalent XML avec des fonctionnalités similaires est<mvc:annotation-driven/>.
La configuration peut être personnalisée par la classe@Configuration implémentant lesWebMvcConfigurer:
@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(
List> converters) {
converters.add(new MyHttpMessageConverter());
}
// ...
}
3. @EnableCaching
La capacité d'annotation@EnableCachingenables annotation-driven cache management dans l'application etallows us to use the @Cacheable and @CacheEvict annotations dans notre application.
L'équivalent XML avec des fonctionnalités similaires est l'espace de noms<cache:*>:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(
Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
}
Cette annotation comporte également les options suivantes:
-
mode - indique comment les conseils de mise en cache doivent être appliqués
-
order - indique l'ordre du conseiller de mise en cache d'exécution lorsqu'il est appliqué à un point de jointure spécifique
-
proxyTargetClass - indique si des proxys basés sur des sous-classes (CGLIB) doivent être créés par opposition aux proxys basés sur une interface Java standard
Cette configuration peut à nouveau être personnalisée par la classe@Configuration implémentant la 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();
}
}
Pour plus d'informations sur l'utilisation de la mise en cache Spring, vous pouvez vous référer à cearticle.
4. @EnableScheduling
L'annotation@EnableSchedulingenables scheduled task capabilities and allows us to use @Scheduled annotations dans l'application. L'équivalent XML avec des fonctionnalités similaires est l'espace de noms<task:*> utilisant l'attributscheduler.
Cette configuration peut à nouveau être personnalisée par la classe@Configuration implémentant la 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);
}
}
Pour plus d'informations sur l'utilisation de la planification Spring, vous pouvez vous référer à cearticle.
5. @EnableAsync
L'annotation@EnableAsyncenables asynchronous processing in our application. L'équivalent XML avec des fonctionnalités similaires est l'espace de noms<task:*> utilisant l'attributexecutor.
@Configuration
@EnableAync
public class AsyncConfig { ... }
Pour en savoir plus sur l'utilisation de Spring async, vous pouvez vous référer à cearticle.
6. @EnableWebSocket
L'annotation@EnableWebSocket est utilisée pourconfigure the processing of web socket requests. La personnalisation peut être effectuée en implémentant la 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();
}
}
Pour plus d'informations sur l'utilisation de Spring Websockets, vous pouvez vous référer à cearticle.
7. @EnableJpaRepositories
L'annotation@EnableJpaRepositoriesenables Spring Data JPA repositories en analysant le package de la classe de configuration annotée pour les référentiels.
@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }
Certaines options disponibles pour cette annotation sont:
-
value - alias pour l'attributbasePackages()
-
basePackages - packages de base pour rechercher les composants annotés
-
enableDefaultTransactions - configure l'activation ou non des transactions par défaut pour les référentiels Spring Data JPA
-
entityManagerFactoryRef - configure le nom de la définition du beanEntityManagerFactory à utiliser
8. @EnableTransactionManagement
L'annotation@EnableTransactionManagementenables Spring’s annotation-driven transaction management capability. L'équivalent XML est l'espace de noms<tx:*>.
@Configuration
@EnableTransactionManagement
public class JpaConfig { ... }
Pour plus d'informations sur l'utilisation de Spring Transaction Management, vous pouvez vous référer à cearticle.
9. @EnableJpaAuditing
L'annotation@EnableJpaAuditingenables auditing on your JPA entities.
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware auditorProvider() {
return new AuditorAwareImpl();
}
}
Pour plus d'informations sur l'utilisation de Spring Web Sockets, vous pouvez vous référer à cearticle.
10. Conclusion
Dans cet article rapide, nous avons examiné certaines annotations Spring de@Enable et comment elles peuvent être utilisées pour nous aider à configurer une application Spring.