Перейти к основному содержимому

Краткое руководство по аннотациям Spring @Enable

· 4 мин. чтения

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.