1. 概述
Spring 提供了集中的註解組 (@Enable 標註),簡化了開發者配置 Spring 應用的過程。這些註解與 @Configuration 標註一起使用。
在本文中,我們將探討這些註解:
- @EnableWebMvc
- @EnableCaching
- @EnableScheduling
- @EnableAsync
- @EnableWebSocket
- @EnableJpaRepositories
- @EnableTransactionManagement
- @EnableJpaAuditing
2.
@EnableWebMvc 註解用於在應用程序中
具有類似功能的 XML 對應項是
可以通過實現
@EnableCaching 註解在應用程序中 啓用基於註解的緩存管理功能,並 允許我們使用@Cacheable 和 @CacheEvict 註解在我們的應用程序中使用。 具有類似功能的 XML 對應項是<cache:*> 命名空間: 此註解還具有以下選項: 此配置還可以通過實現 CachingConfigurerSupport 類的 @Configuration 類進行自定義。 關於使用 Spring 緩存的更多信息,請參閲這篇文章。 該 <em @EnableScheduling> 註解 啓用定時任務功能,並允許我們在應用程序中使用 <em @Scheduled> 註解。 XML 對應的同等功能是使用 <task:*> 命名空間以及 scheduler 屬性。 此配置還可以通過實現 SchedulingConfigurer 類的 <em @Configuration> 類進行自定義: 關於使用 Spring 調度功能,您可以參考這篇文章。 @EnableAsync 註解 啓用了我們應用程序中的異步處理。 對應的 XML 命名空間,具有類似功能的,是 <task:*> 命名空間,使用 executor 屬性。 要了解更多關於使用 Spring 異步的信息,您可以參考這篇文章。 關於使用 Spring Websockets 的更多信息,請參閲這篇文章。 @EnableJpaRepositories 註解通過掃描標註的配置類所在包,啓用 Spring Data JPA 倉庫。 以下是一些可用的選項: 該 <em @EnableTransactionManagement> 註解 啓用 Spring 的基於註解的事務管理功能。 XML 對應的命名空間是 <em <tx:*>。 關於使用 Spring Transaction Management 的更多信息,您可以參考這篇文檔。 @EnableJpaAuditing 註解 啓用您的 JPA 實體上的審計功能。 關於使用 Spring Web Sockets 的更多信息,您可以參考這篇文章。@Configuration
@EnableWebMvc
public class SpringMvcConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
converters.add(new MyHttpMessageConverter());
}
// ...
}3. <em @EnableCaching
>
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(
Arrays.asList(new ConcurrentMapCache("default")));
return cacheManager;
}
}
@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();
}
}4. <em @EnableScheduling
>
@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);
}
}5. @EnableAsync
@Configuration
@EnableAync
public class AsyncConfig { ... }6. <em @EnableWebSocket>
<em @EnableWebSocket</em>> 註解用於配置 WebSocket 請求的處理。可以通過實現 <em WebSocketConfigurer</em>> 類進行自定義:@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();
}
}7. <em @EnableJpaRepositories>
@Configuration
@EnableJpaRepositories
public class JpaConfig { ... }
8. <em @EnableTransactionManagement>
@Configuration
@EnableTransactionManagement
public class JpaConfig { ... }9. <em @EnableJpaAuditing>
@Configuration
@EnableJpaAuditing
public class JpaConfig {
@Bean
public AuditorAware<AuditableUser> auditorProvider() {
return new AuditorAwareImpl();
}
}10. 結論
在本文中,我們探討了 @Enable Spring 註解及其在配置 Spring Application 中的應用。