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

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

1. 概要

Springには@Enable annotations that make it easier for developers to configure a Spring applicationのセットが付属しています。 これらの注釈はused in conjunction with the @Configuration annotationです。

この記事では、これらの注釈をいくつか見ていきます。

  • @EnableWebMvc

  • @EnableCaching

  • @EnableScheduling

  • @EnableAsync

  • @EnableWebSocket

  • @EnableJpaRepositories

  • @EnableTransactionManagement

  • @EnableJpaAuditing

2. @EnableWebMvc

@EnableWebMvcアノテーションはenabling Spring MVC in an applicationに使用され、WebMvcConfigurationSupportからSpringMVC構成をインポートすることで機能します。

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

構成は、WebMvcConfigurerを実装する@Configurationクラスによってカスタマイズできます。

@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(
      List> converters) {

        converters.add(new MyHttpMessageConverter());
    }

    // ...
}

3. @EnableCaching

アプリケーション内の@EnableCachingアノテーションenables annotation-driven cache management機能と、アプリケーション内のallows us to use the @Cacheable and @CacheEvict annotations機能。

同様の機能を持つ同等の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 —標準のJavaインターフェイスベースのプロキシではなく、サブクラスベース(CGLIB)のプロキシを作成するかどうかを示します

この構成も、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キャッシングの使用の詳細については、このarticleを参照できます。

4. @EnableScheduling

アプリケーションの@EnableSchedulingアノテーションenables scheduled task capabilities and allows us to use @Scheduled annotations。 同様の機能を持つ同等の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スケジューリングの使用の詳細については、このarticleを参照してください。

5. @EnableAsync

@EnableAsyncアノテーションenables asynchronous processing in our application。 同様の機能を持つ同等のXMLは、executor属性を使用する<task:*>名前空間です。

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

Spring asyncの使用の詳細については、このarticleを参照してください。

6. @EnableWebSocket

@EnableWebSocketアノテーションはconfigure the processing of web socket requestsに使用されます。 カスタマイズは、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 Websocketの使用の詳細については、このarticleを参照できます。

7. @EnableJpaRepositories

注釈付き構成クラスのパッケージをスキャンしてリポジトリーを探すことによる@EnableJpaRepositories注釈enables Spring Data JPA repositories

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

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

  • valuebasePackages()属性のエイリアス

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

  • enableDefaultTransactions — Spring DataJPAリポジトリのデフォルトトランザクションを有効にするかどうかを設定します

  • entityManagerFactoryRef —使用するEntityManagerFactoryBean定義の名前を構成します

8. @EnableTransactionManagement

@EnableTransactionManagementアノテーションenables Spring’s annotation-driven transaction management capability。 XMLに相当するのは、<tx:*>名前空間です。

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

Spring Transaction Managementの使用の詳細については、このarticleを参照してください。

9. @EnableJpaAuditing

@EnableJpaAuditingアノテーションenables auditing on your JPA entities

@Configuration
@EnableJpaAuditing
public class JpaConfig {

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

Spring Web Socketsの使用の詳細については、このarticleを参照できます。

10. 結論

この簡単な記事では、いくつかの@Enable Springアノテーションと、それらを使用してSpringアプリケーションを構成する方法について説明しました。