Guide rapide des annotations Spring @Enable

1. Vue d'ensemble

Spring est livré avec un ensemble d' annotations @Enable qui permettent aux développeurs de configurer plus facilement une application Spring . Ces annotations sont utilisées conjointement avec l' annotation @Configuration .

Dans cet article, nous examinerons certaines de ces annotations:

  • @EnableWebMvc
  • @EnableCaching
  • @EnableScheduling
  • @EnableAsync
  • @EnableWebSocket
  • @EnableJpaRepositories
  • @EnableTransactionManagement
  • @EnableJpaAuditing

2. @EnableWebMvc

L' annotation @EnableWebMvc est utilisée pour activer Spring MVC dans une application et fonctionne en important la configuration Spring MVC à partir de WebMvcConfigurationSupport .

L'équivalent XML avec des fonctionnalités similaires est .

La configuration peut être personnalisée par la classe @Configuration implémentant WebMvcConfigurer :

@Configuration @EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters( List
    
      converters) { converters.add(new MyHttpMessageConverter()); } // ... }
    

3. @EnableCaching

L' annotation @EnableCaching permet une gestion du cache basée sur les annotations dans l'application et nous permet d'utiliser les annotations @Cacheable et @CacheEvict dans notre application.

L'équivalent XML avec des fonctionnalités similaires est le espace de noms:

@Configuration @EnableCaching public class CacheConfig { @Bean public CacheManager cacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); cacheManager.setCaches( Arrays.asList(new ConcurrentMapCache("default"))); return cacheManager; } }

Cette annotation propose é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 proxies basés sur une interface Java standard

Cette configuration peut à nouveau être personnalisée par la classe @Configuration implémentant la classe CachingConfigurerSupport :

@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 à cet article.

4. @EnableScheduling

L' annotation @EnableScheduling active les capacités des tâches planifiées et nous permet d'utiliser les annotations @Scheduled dans l'application. L'équivalent XML avec des fonctionnalités similaires est leespace de noms à l'aide de l' attribut du planificateur .

Cette configuration peut à nouveau être personnalisée par la classe @Configuration implémentant la classe SchedulingConfigurer :

@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 en savoir plus sur l'utilisation de la planification Spring, vous pouvez consulter cet article.

5. @EnableAsync

L' annotation @EnableAsync permet un traitement asynchrone dans notre application . L'équivalent XML avec des fonctionnalités similaires est leespace de noms à l'aide de l' attribut executor .

@Configuration @EnableAync public class AsyncConfig { ... }

Pour en savoir plus sur l'utilisation de Spring async, vous pouvez consulter cet article.

6. @EnableWebSocket

L' annotation @EnableWebSocket est utilisée pour configurer le traitement des requêtes de socket Web . La personnalisation peut être effectuée en implémentant la classe WebSocketConfigurer :

@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 à cet article.

7. @EnableJpaRepositories

L' annotation @EnableJpaRepositories active les référentiels Spring Data JPA 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:

  • La valeur - alias pour les basePackages () attribut
  • basePackages - packages de base pour rechercher des composants annotés
  • enableDefaultTransactions - configure s'il faut ou non activer les transactions par défaut pour les référentiels Spring Data JPA
  • entityManagerFactoryRef - configure le nom de ladéfinition du bean EntityManagerFactory à utiliser

8. @EnableTransactionManagement

L' annotation @EnableTransactionManagement active la capacité de gestion des transactions basée sur les annotations de Spring . L'équivalent XML est le espace de noms.

@Configuration @EnableTransactionManagement public class JpaConfig { ... }

Pour plus d'informations sur l'utilisation de Spring Transaction Management, vous pouvez vous référer à cet article.

9. @EnableJpaAuditing

L' annotation @EnableJpaAuditing permet l'audit de vos entités JPA .

@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 à cet article.

10. Conclusion

Dans cet article rapide, nous avons examiné quelques annotations @Enable Spring et comment elles peuvent être utilisées pour nous aider à configurer une application Spring.