Guía rápida de las anotaciones de Spring @Enable

1. Información general

Spring viene con un conjunto de anotaciones @Enable que facilitan a los desarrolladores la configuración de una aplicación Spring . Estas anotaciones se utilizan junto con la anotación @Configuration .

En este artículo veremos algunas de estas anotaciones:

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

2. @EnableWebMvc

La anotación @EnableWebMvc se usa para habilitar Spring MVC en una aplicación y funciona importando la configuración Spring MVC desde WebMvcConfigurationSupport .

El equivalente XML con una funcionalidad similar es .

La configuración se puede personalizar mediante la clase @Configuration que implementa WebMvcConfigurer :

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

3. @EnableCaching

La anotación @EnableCaching habilita la capacidad de administración de caché basada en anotaciones dentro de la aplicación y nos permite usar las anotaciones @Cacheable y @CacheEvict en nuestra aplicación.

El equivalente XML con una funcionalidad similar es el espacio de nombres:

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

Esta anotación también tiene las siguientes opciones:

  • modo : indica cómo se deben aplicar los consejos de almacenamiento en caché
  • orden : indica el orden del asesor de almacenamiento en caché de ejecución cuando se aplica en un punto de unión específico
  • proxyTargetClass : indica si se deben crear proxies basados ​​en subclase (CGLIB) en lugar de proxies estándar basados ​​en interfaces Java

Esta configuración nuevamente puede ser personalizada por la clase @Configuration implementando la clase 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(); } }

Para obtener más información sobre el uso del almacenamiento en caché de Spring, puede consultar este artículo.

4. @EnableScheduling

La anotación @EnableScheduling habilita las capacidades de tareas programadas y nos permite usar anotaciones @Scheduled en la aplicación. El equivalente XML con una funcionalidad similar es elespacio de nombres utilizando el atributo del planificador .

Esta configuración nuevamente puede ser personalizada por la clase @Configuration implementando la clase 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); } }

Para obtener más información sobre el uso de la programación de Spring, puede consultar este artículo.

5. @EnableAsync

La anotación @EnableAsync habilita el procesamiento asincrónico en nuestra aplicación . El equivalente XML con una funcionalidad similar es elespacio de nombres usando el atributo ejecutor .

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

Para obtener más información sobre el uso de Spring async, puede consultar este artículo.

6. @EnableWebSocket

La anotación @EnableWebSocket se utiliza para configurar el procesamiento de solicitudes de sockets web . La personalización se puede realizar implementando la clase 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(); } }

Para obtener más información sobre el uso de Spring Websockets, puede consultar este artículo.

7. @EnableJpaRepositories

La anotación @EnableJpaRepositories habilita los repositorios Spring Data JPA al escanear el paquete de la clase de configuración anotada en busca de repositorios.

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

Algunas opciones disponibles para esta anotación son:

  • valor - alias para elatributo basePackages ()
  • basePackages : paquetes base para escanear en busca de componentes anotados
  • enableDefaultTransactions : configura si habilitar o no las transacciones predeterminadas para los repositorios Spring Data JPA
  • entityManagerFactoryRef : configura el nombre de ladefinición de bean EntityManagerFactory que se utilizará

8. @EnableTransactionManagement

La anotación @EnableTransactionManagement habilita la capacidad de gestión de transacciones impulsada por anotaciones de Spring . El equivalente XML es el espacio de nombres.

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

Para obtener más información sobre el uso de Spring Transaction Management, puede consultar este artículo.

9. @EnableJpaAuditing

La anotación @EnableJpaAuditing habilita la auditoría en sus entidades JPA .

@Configuration @EnableJpaAuditing public class JpaConfig { @Bean public AuditorAware auditorProvider() { return new AuditorAwareImpl(); } }

Para obtener más información sobre el uso de Spring Web Sockets, puede consultar este artículo.

10. Conclusión

En este artículo rápido, analizamos algunas anotaciones de @Enable Spring y cómo se pueden usar para ayudarnos a configurar una aplicación Spring.