1概要

Springには、開発者がSpringアプリケーションを簡単に設定できるようにする一連の**

@ Enable

アノテーションが付属しています。これらのアノテーションは

@ Configuration

アノテーションと組み合わせて使われます。

この記事では、これらのアノテーションをいくつか見ていきます。


  • @ EnableWebMvc


  • @ EnableCaching


  • @ EnableScheduling


  • @ EnableAsync


  • @ EnableWebSocket


  • @ EnableJpaRepositories


  • @ EnableTransactionManagement


  • @ EnableJpaAuditing


2

@ EnableWebMvc



@ EnableWebMvc

アノテーションは

アプリケーションでSpring MVCを有効にする

ために使用され、

WebMvcConfigurationSupport

からSpring MVC設定をインポートすることによって機能します。

同様の機能を持つXMLと同等のものは__ <mvc:annotation-driven/>です。

設定は、

WebMvcConfigurer

を実装する

@ Configuration

クラスによってカスタマイズできます。

@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;
    }
}

この注釈には以下のオプションもあります。



  • mode


    – キャッシングアドバイスの適用方法を示します



  • order


    – 実行キャッシングアドバイザの順序を示します

特定のジョインポイントに適用した場合




proxyTargetClass ** – サブクラスベースかどうかを示す(CGLIB)

プロキシは、標準のJavaインタフェースベースのプロキシとは対照的に作成されます。

この設定も、

CachingConfigurerSupport

クラスを実装する

@ Configuration

クラスによってカスタマイズできます。

@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キャッシュの使用に関する詳細は、このリンクを参照することができます:/spring-cache-tutorial[article]。


4

@ EnableScheduling



@ EnableScheduling

アノテーション

はスケジュールされたタスク機能を有効にし、アプリケーションで

@ Scheduled

アノテーション

を使用することを可能にします。同様の機能を持つ同等のXMLは、

scheduler

属性を使用した

<task:** >

名前空間です。

この設定も、

SchedulingConfigurer

クラスを実装する

@ Configuration

クラスによってカスタマイズできます。

@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は、

executor

属性を使用した

<task:** >

ネームスペースです。

@Configuration
@EnableAync
public class AsyncConfig { ... }

Spring asyncの使い方については、/link-async[article]を参照してください。


6.

@ EnableWebSocket



@ EnableWebSocket

アノテーションは、Webソケットリクエストの処理を設定するために使用されます。カスタマイズは

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の使用に関する詳細は、このリンクを参照することができます:/websockets-spring[記事]。


7.

@ EnableJpaRepositories



@ EnableJpaRepositories

アノテーション

は、アノテーション付き構成クラスのパッケージからリポジトリーをスキャンすることによって、Spring Data JPAリポジトリー

を有効にします。

@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }

この注釈に使用できるオプションは次のとおりです。



  • value




    basePackages()

    属性のエイリアス



  • basePackages


    – 注釈付きコンポーネントをスキャンするための基本パッケージ



  • enableDefaultTransactions


    – 有効にするかどうかを設定

Spring Data JPAリポジトリのデフォルトトランザクション




entityManagerFactoryRef ** – の名前を設定します。

使用する

EntityManagerFactory

Bean定義


8

@ EnableTransactionManagement



@ EnableTransactionManagement

アノテーション

は、Springのアノテーション駆動型トランザクション管理機能

を有効にします。 XMLに相当するものは

<tx:** >

名前空間です。

@Configuration
@EnableTransactionManagement
public class JpaConfig { ... }

Spring Transaction Managementの使用についての詳細は、このリンク:/transaction-configuration-with-jpa-spring[article]を参照することができます。


9

@ EnableJpaAuditing



@ EnableJpaAuditing

アノテーション

はあなたのJPAエンティティ

に対する監査を有効にします。

@Configuration
@EnableJpaAuditing
public class JpaConfig {

    @Bean
    public AuditorAware<AuditableUser> auditorProvider() {
        return new AuditorAwareImpl();
    }
}

Spring Web Socketsの使用についての詳細は、このリンクを参照することができます:/database-auditing-jpa[article]。


10結論

このクイック記事では、いくつかの

@ Enable

Springアノテーションと、それらを使用してSpringアプリケーションを構成するのに役立つ方法について説明しました。