Рубрики
Без рубрики

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

Краткий обзор аннотаций @Enable весной и того, как они могут помочь настроить приложение.

Автор оригинала: baeldung.

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 AuditorAware auditorProvider() {
        return new AuditorAwareImpl();
    }
}

Для получения дополнительной информации об использовании веб-сокетов Spring вы можете обратиться к этой статье .

10. Заключение

В этой краткой статье мы рассмотрели некоторые аннотации @Enable Spring и то, как их можно использовать для настройки приложения Spring.