1. Обзор
Spring поставляется с набором аннотаций @Enable
, упрощающих разработчикам настройку приложения Spring . Эти аннотации используются вместе с аннотацией @Configuration
.
В этой статье мы рассмотрим некоторые из этих аннотаций:
@EnableWebMvc
@EnableCaching
@EnableScheduling
@EnableAsync
@EnableWebSocket
@EnableJpaRepositories
@EnableTransactionManagement
@EnableJpaAuditing
2. @EnableWebMvc
Аннотация @EnableWebMvc
используется для включения Spring MVC в приложении и работает путем импорта конфигурации Spring MVC из WebMvcConfigurationSupport
.
Эквивалентом XML с аналогичной функциональностью является <mvc:annotation-driven/>.
Конфигурация может быть настроена классом @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-эквивалентом с аналогичной функциональностью является пространство имен <cache:*> :
@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-эквивалентом с аналогичной функциональностью является пространство имен <task:*>
, использующее атрибут 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-эквивалентом с аналогичной функциональностью является пространство имен <task:*>
с использованием атрибута исполнителя .
@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 Websockets, вы можете обратиться к этой статье .
7. @EnableJpaRepositories
Аннотация @EnableJpaRepositories
включает репозитории Spring Data JPA путем сканирования пакета аннотированного класса конфигурации на наличие репозиториев.
@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }
Некоторые параметры, доступные для этой аннотации:
value
— псевдоним для атрибутаbasePackages()
basePackages
— базовые пакеты для сканирования аннотированных компонентовenableDefaultTransactions
— настраивает, следует ли включать транзакции по умолчанию для репозиториев Spring Data JPA.entityManagerFactoryRef
— настраивает имя используемого определения bean-компонента EntityManagerFactory .
8. @EnableTransactionManagement
Аннотация @EnableTransactionManagement
включает возможности Spring по управлению транзакциями на основе аннотаций . Эквивалентом XML является пространство имен <tx:*> .
@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.