«1. Обзор
Spring поставляется с набором аннотаций @Enable, упрощающих разработчикам настройку приложения Spring. Эти аннотации используются вместе с аннотацией @Configuration.
В этой статье мы рассмотрим некоторые из этих аннотаций:
-
@EnableWebMvc @EnableCaching @EnableScheduling @EnableAsync @EnableWebSocket @EnableJpaRepositories @EnableTransactionManagement @EnableJpaAuditing
2. @EnableWebMvc
Используется аннотация @EnableWebMvc для включения Spring MVC в приложении и работает путем импорта конфигурации Spring MVC из WebMvcConfigurationSupport.
XML-эквивалентом с аналогичной функциональностью является \u003cmvc:annotation-driven/\u003e.
Конфигурация может быть настроена классом @Configuration, реализующим WebMvcConfigurer:
@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
converters.add(new MyHttpMessageConverter());
}
// ...
}
3. @EnableCaching
Аннотация @EnableCaching включает возможность управления кэшем на основе аннотаций в приложении и позволяет нам использовать Аннотации @Cacheable и @CacheEvict в нашем приложении.
XML-эквивалентом с аналогичной функциональностью является пространство имен \u003ccache:*\u003e:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(
Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
}
Эта аннотация также имеет следующие параметры:
-
режим — указывает порядок применения рекомендаций по кэшированию — указывает порядок выполнения советника по кэшированию при применении в определенной точке соединения proxyTargetClass — указывает, должны ли создаваться прокси-серверы на основе подкласса (CGLIB) в отличие от стандартных прокси-серверов на основе интерфейса Java
Эта конфигурация снова может быть настроена с помощью класс @Configuration, реализующий класс 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();
}
}
Для получения дополнительной информации об использовании кэширования Spring вы можете обратиться к этой статье.
4. @EnableScheduling
Аннотация @EnableScheduling включает возможности запланированных задач и позволяет нам использовать аннотации @Scheduled в приложении. XML-эквивалентом с аналогичной функциональностью является пространство имен \u003ctask:*\u003e, использующее атрибут scheduler.
Эту конфигурацию снова можно настроить с помощью класса @Configuration, реализующего класс 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);
}
}
Дополнительные сведения об использовании планирования Spring можно найти в этой статье.
5. @EnableAsync
Аннотация @EnableAsync включает асинхронную обработку в нашем приложении. XML-эквивалентом с аналогичной функциональностью является пространство имен \u003ctask:*\u003e с использованием атрибута исполнителя.
@Configuration
@EnableAync
public class AsyncConfig { ... }
Для получения дополнительной информации об использовании Spring async вы можете обратиться к этой статье.
6. @EnableWebSocket
Аннотация @EnableWebSocket используется для настройки обработки запросов веб-сокетов. Настройка может быть выполнена путем реализации класса 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();
}
}
Дополнительные сведения об использовании веб-сокетов Spring см. в этой статье.
7. @EnableJpaRepositories
Аннотация @EnableJpaRepositories включает репозитории Spring Data JPA путем сканирования пакета аннотированного класса конфигурации на наличие репозиториев.
@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }
Некоторые параметры, доступные для этой аннотации:
-
значение — псевдоним для атрибута basePackages(). basePackages — базовые пакеты для сканирования аннотированных компонентов. транзакции для репозиториев Spring Data JPA entityManagerFactoryRef — настраивает имя используемого определения bean-компонента EntityManagerFactory
8. @EnableTransactionManagement
Аннотация @EnableTransactionManagement включает возможность управления транзакциями Spring на основе аннотаций. Эквивалентом XML является пространство имен \u003ctx:*\u003e.
@Configuration
@EnableTransactionManagement
public class JpaConfig { ... }
Чтобы узнать больше об использовании Spring Transaction Management, вы можете обратиться к этой статье.
9. @EnableJpaAuditing
Аннотация @EnableJpaAuditing позволяет проводить аудит ваших объектов JPA.
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware<AuditableUser> auditorProvider() {
return new AuditorAwareImpl();
}
}
Дополнительные сведения об использовании Spring Web Sockets см. в этой статье.
10. Заключение
В этой быстрой статье мы рассмотрели некоторые аннотации @Enable Spring и то, как их можно использовать для настройки приложения Spring.