1. Обзор
Spring поставляется с набором аннотаций @Enable , которые облегчают разработчикам настройку приложения Spring . Эти аннотации используются в сочетании с @Configuration аннотацией .
В этой статье мы рассмотрим некоторые из этих аннотаций:
- @EnableWebMvc
- @EnableCaching
- @EnableScheduling
- @EnableAsync
- @EnableWebSocket
- @EnableJpaRepositories
- @EnableTransactionManagement
- @EnableJpaAuditing
2. @EnableWebMvc
Аннотация @EnableWebMvc используется для включения Spring MVC в приложении и работает путем импорта конфигурации Spring MVC из WebMvcConfigurationSupport .
Эквивалентом XML с аналогичной функциональностью является .
Конфигурация может быть настроена классом @Configuration , реализующим WebMvcConfigurer :
@Configuration @EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters( List> converters) { converters.add(new MyHttpMessageConverter()); } // ... }
3. @EnableCaching
@EnableCaching аннотации позволяет управлять кэшем на основе аннотаций в приложении и позволяет нам использовать @Cacheevict аннотации в нашем приложении.
XML-эквивалентом с аналогичной функциональностью является пространство имен :
@Configuration @EnableCaching public class CacheConfig { @Bean public CacheManager cacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); cacheManager.setCaches( Arrays.asList(new ConcurrentMapCache("default"))); return cacheManager; } }
Эта аннотация также имеет следующие параметры:
- режим — указывает, как следует применять рекомендации по кэшированию
- 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 вы можете прочитать в этой статье .
4. @EnableScheduling
@EnableScheduling аннотации включает возможности запланированных задач и позволяет нам использовать @Запланированные аннотации в приложении. XML-эквивалентом с аналогичной функциональностью является пространство имен с использованием атрибута 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); } }
Для получения дополнительной информации об использовании весеннего планирования вы можете обратиться к этой статье .
5. @EnableAsync
@EnableAsync аннотация включает асинхронную обработку в нашем приложении . XML-эквивалентом с аналогичной функциональностью является пространство имен с использованием атрибута executor .
@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 { ... }
Некоторые параметры, доступные для этой аннотации::
- значение — псевдоним для атрибута basePackages()
- Базовые пакеты — базовые пакеты для сканирования аннотированных компонентов
- enableDefaultTransactions — определяет, следует ли включать транзакции по умолчанию для репозиториев Spring Data JPA
- entityManagerFactoryRef — настраивает имя используемого определения компонента EntityManagerFactory
8. @EnableTransactionManagement
@EnableTransactionManagement annotation включает функцию управления транзакциями Spring на основе аннотаций . XML-эквивалентом является пространство имен .
@Configuration @EnableTransactionManagement public class JpaConfig { ... }
Для получения дополнительной информации об использовании управления транзакциями Spring вы можете обратиться к этой статье .
9. @EnableJpaAuditing
@EnableJpaAuditing аннотация включает аудит объектов JPA .
@Configuration @EnableJpaAuditing public class JpaConfig { @Bean public AuditorAwareauditorProvider() { return new AuditorAwareImpl(); } }
Для получения дополнительной информации об использовании веб-сокетов Spring вы можете обратиться к этой статье .
10. Заключение
В этой краткой статье мы рассмотрели некоторые аннотации @Enable Spring и то, как их можно использовать для настройки приложения Spring.