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.