Краткое руководство по Spring @Enable Аннотации
1. обзор
Spring поставляется с набором@Enable annotations that make it easier for developers to configure a Spring application. Это аннотацииused in conjunction with the @Configuration annotation.
В этой статье мы рассмотрим некоторые из этих аннотаций:
-
@EnableWebMvc
-
@EnableCaching
-
@EnableScheduling
-
@EnableAsync
-
@EnableWebSocket
-
@EnableJpaRepositories
-
@EnableTransactionManagement
-
@EnableJpaAuditing
2. @EnableWebMvcс
Аннотация@EnableWebMvc используется дляenabling Spring MVC in an application и работает путем импорта конфигурации Spring MVC изWebMvcConfigurationSupport.
Эквивалент XML с аналогичной функциональностью:<mvc:annotation-driven/>.
Конфигурация может быть изменена классом@Configuration, реализующимWebMvcConfigurer:
@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(
List> converters) {
converters.add(new MyHttpMessageConverter());
}
// ...
}
3. @EnableCachingс
Возможность аннотации@EnableCachingenables annotation-driven cache management в приложении иallows us to use the @Cacheable and @CacheEvict annotations в нашем приложении.
Эквивалент XML с аналогичной функциональностью - пространство имен<cache:*>:
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(
Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
}
Эта аннотация также имеет следующие параметры:
-
mode - указывает, как следует применять совет по кешированию
-
order - указывает порядок советника по кэшированию выполнения при применении в определенной точке соединения
-
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 вы можете обратиться к этомуarticle.
4. @EnableSchedulingс
Аннотация@EnableSchedulingenables scheduled task capabilities and allows us to use @Scheduled annotations в приложении. Эквивалентом 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 вы можете обратиться к этомуarticle.
5. @EnableAsyncс
Аннотация@EnableAsyncenables asynchronous processing in our application. Эквивалентом XML с аналогичной функциональностью является пространство имен<task:*>, использующее атрибутexecutor.
@Configuration
@EnableAync
public class AsyncConfig { ... }
Для получения дополнительной информации об использовании Spring async вы можете обратиться к этомуarticle.
6. @EnableWebSocketс
Аннотация@EnableWebSocket используется дляconfigure the processing of web socket requests. Настройка может быть выполнена путем реализации класса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 вы можете обратиться к этомуarticle.
7. @EnableJpaRepositoriesс
Аннотации@EnableJpaRepositoriesenables Spring Data JPA repositories путем сканирования пакета аннотированного класса конфигурации на предмет репозиториев.
@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }
Некоторые варианты, доступные для этой аннотации:
-
value - псевдоним атрибутаbasePackages()
-
basePackages - базовые пакеты для сканирования аннотированных компонентов
-
enableDefaultTransactions - настраивает, следует ли включать транзакции по умолчанию для репозиториев Spring Data JPA
-
entityManagerFactoryRef - задает имя используемого определения bean-компонентаEntityManagerFactory
8. @EnableTransactionManagementс
Аннотация@EnableTransactionManagementenables Spring’s annotation-driven transaction management capability. Эквивалент XML - это пространство имен<tx:*>.
@Configuration
@EnableTransactionManagement
public class JpaConfig { ... }
Для получения дополнительной информации об использовании Spring Transaction Management вы можете обратиться к этомуarticle.
9. @EnableJpaAuditingс
Аннотация@EnableJpaAuditingenables auditing on your JPA entities.
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware auditorProvider() {
return new AuditorAwareImpl();
}
}
Чтобы узнать больше об использовании Spring Web Sockets, вы можете обратиться к этомуarticle.
10. Заключение
В этой быстрой статье мы рассмотрели некоторые аннотации@Enable Spring и то, как их можно использовать, чтобы помочь нам настроить приложение Spring.