Kurzanleitung zu den Spring @Enable-Anmerkungen

Kurzanleitung zu den Anmerkungen zu Spring @Enable

1. Überblick

Der Frühling kommt mit einem Satz von@Enable annotations that make it easier for developers to configure a Spring application. Diese Anmerkungen sindused in conjunction with the @Configuration annotation.

In diesem Artikel werden wir uns einige dieser Anmerkungen ansehen:

  • @EnableWebMvc

  • @ EnableCaching

  • @EnableScheduling

  • @EnableAsync

  • @EnableWebSocket

  • @EnableJpaRepositories

  • @EnableTransactionManagement

  • @EnableJpaAuditing

2. @EnableWebMvc

Die Annotation@EnableWebMvc wird fürenabling Spring MVC in an application verwendet und importiert die Spring MVC-Konfiguration ausWebMvcConfigurationSupport.

Das XML-Äquivalent mit ähnlicher Funktionalität ist<mvc:annotation-driven/>.

Die Konfiguration kann durch die Klasse@Configurationangepasst werden, dieWebMvcConfigurerimplementiert:

@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(
      List> converters) {

        converters.add(new MyHttpMessageConverter());
    }

    // ...
}

3. @EnableCaching

Die Annotation@EnableCachingenables annotation-driven cache management Fähigkeit innerhalb der Anwendung undallows us to use the @Cacheable and @CacheEvict annotations in unserer Anwendung.

Das XML-Äquivalent mit ähnlicher Funktionalität ist der Namespace von<cache:*>:

@Configuration
@EnableCaching
public class CacheConfig {

    @Bean
    public CacheManager cacheManager() {
        SimpleCacheManager cacheManager = new SimpleCacheManager();
        cacheManager.setCaches(
          Arrays.asList(new ConcurrentMapCache("default")));
        return cacheManager;
    }
}

Diese Anmerkung hat auch die folgenden Optionen:

  • mode - gibt an, wie der Caching-Rat angewendet werden soll

  • order - Gibt die Reihenfolge des Ausführungs-Caching-Beraters an, wenn er an einem bestimmten Joinpoint angewendet wird

  • proxyTargetClass - Gibt an, ob CGLIB-Proxys (Subclass Based) im Gegensatz zu Standard-Proxys auf Java-Schnittstellenbasis erstellt werden sollen

Diese Konfiguration kann erneut von der Klasse@Configurationangepasst werden, die die KlasseCachingConfigurerSupportimplementiert:

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

Weitere Informationen zur Verwendung von Spring Caching finden Sie inarticle.

4. @EnableScheduling

Die Annotation@EnableSchedulingenables scheduled task capabilities and allows us to use @Scheduled annotations in der Anwendung. Das XML-Äquivalent mit ähnlicher Funktionalität ist der Namespace<task:*>unter Verwendung des Attributsscheduler.

Diese Konfiguration kann erneut von der Klasse@Configurationangepasst werden, die die KlasseSchedulingConfigurerimplementiert:

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

Weitere Informationen zur Verwendung der Frühlingsplanung finden Sie inarticle.

5. @EnableAsync

Die Annotation@EnableAsyncenables asynchronous processing in our application. Das XML-Äquivalent mit ähnlicher Funktionalität ist der Namespace<task:*>unter Verwendung des Attributsexecutor.

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

Weitere Informationen zur Verwendung von Spring async finden Sie inarticle.

6. @EnableWebSocket

Die Annotation@EnableWebSocket wird fürconfigure the processing of web socket requests verwendet. Die Anpassung kann durch Implementieren der KlasseWebSocketConfigurererfolgen:

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

Weitere Informationen zur Verwendung von Spring Websockets finden Sie inarticle.

7. @EnableJpaRepositories

Die Annotation@EnableJpaRepositoriesenables Spring Data JPA repositories durch Scannen des Pakets der annotierten Konfigurationsklasse nach Repositorys.

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

Für diese Anmerkung stehen folgende Optionen zur Verfügung:

  • value - Alias ​​für das AttributbasePackages()

  • basePackages - Basispakete zum Scannen nach kommentierten Komponenten

  • enableDefaultTransactions - Konfiguriert, ob Standardtransaktionen für Spring Data JPA-Repositorys aktiviert werden sollen

  • entityManagerFactoryRef - Konfiguriert den Namen der zu verwendenden Bean-Definition vonEntityManagerFactory

8. @EnableTransactionManagement

Die Annotation@EnableTransactionManagementenables Spring’s annotation-driven transaction management capability. Das XML-Äquivalent ist der Namespace<tx:*>.

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

Weitere Informationen zur Verwendung von Spring Transaction Management finden Sie inarticle.

9. @EnableJpaAuditing

Die Annotation@EnableJpaAuditingenables auditing on your JPA entities.

@Configuration
@EnableJpaAuditing
public class JpaConfig {

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

Weitere Informationen zur Verwendung von Spring Web Sockets finden Sie inarticle.

10. Fazit

In diesem kurzen Artikel haben wir uns einige@Enable Spring-Annotationen angesehen und erklärt, wie sie uns beim Konfigurieren einer Spring-Anwendung helfen können.