Springのクイックガイド@Enableアノテーション

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アプリケーションを構成するのに役立つ方法について説明しました。