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.