1. Panoramica
Spring viene fornito con una serie di annotazioni @Enable che semplificano la configurazione di un'applicazione Spring per gli sviluppatori . Queste annotazioni vengono utilizzate insieme all'annotazione @Configuration .
In questo articolo esamineremo alcune di queste annotazioni:
- @EnableWebMvc
- @EnableCaching
- @EnableScheduling
- @EnableAsync
- @EnableWebSocket
- @EnableJpaRepositories
- @EnableTransactionManagement
- @EnableJpaAuditing
2. @EnableWebMvc
L' annotazione @EnableWebMvc viene utilizzata per abilitare Spring MVC in un'applicazione e funziona importando la configurazione Spring MVC da WebMvcConfigurationSupport .
L'equivalente XML con funzionalità simili è .
La configurazione può essere personalizzata dalla classe @Configuration implementando il WebMvcConfigurer :
@Configuration @EnableWebMvc public class SpringMvcConfig implements WebMvcConfigurer { @Override public void configureMessageConverters( List
converters) { converters.add(new MyHttpMessageConverter()); } // ... }
3. @EnableCaching
L' annotazione @EnableCaching abilita la capacità di gestione della cache basata sull'annotazione all'interno dell'applicazione e ci consente di utilizzare le annotazioni @Cacheable e @CacheEvict nella nostra applicazione.
L'equivalente XML con funzionalità simili è il spazio dei nomi:
@Configuration @EnableCaching public class CacheConfig { @Bean public CacheManager cacheManager() { SimpleCacheManager cacheManager = new SimpleCacheManager(); cacheManager.setCaches( Arrays.asList(new ConcurrentMapCache("default"))); return cacheManager; } }
Questa annotazione ha anche le seguenti opzioni:
- modalità : indica come applicare il consiglio di memorizzazione nella cache
- ordine : indica l'ordinamento dell'advisor di memorizzazione nella cache di esecuzione quando applicato a un punto di unione specifico
- proxyTargetClass - indica se i proxy basati su sottoclassi (CGLIB) devono essere creati rispetto ai proxy basati su interfaccia Java standard
Questa configurazione può essere nuovamente personalizzata dalla classe @Configuration che implementa la classe CachingConfigurerSupport :
@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(); } }
Per ulteriori informazioni sull'utilizzo della memorizzazione nella cache di Spring, fare riferimento a questo articolo.
4. @EnableScheduling
L' annotazione @EnableScheduling abilita le funzionalità delle attività pianificate e ci consente di utilizzare le annotazioni @Scheduling nell'applicazione. L'equivalente XML con funzionalità simili è ilspazio dei nomi utilizzando l' attributo scheduler .
Questa configurazione può essere nuovamente personalizzata dalla classe @Configuration implementando la classe SchedulingConfigurer :
@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); } }
Per ulteriori informazioni sull'utilizzo della pianificazione di primavera, puoi fare riferimento a questo articolo.
5. @EnableAsync
L' annotazione @EnableAsync abilita l'elaborazione asincrona nella nostra applicazione . L'equivalente XML con funzionalità simili è ilspazio dei nomi utilizzando l' attributo executor .
@Configuration @EnableAync public class AsyncConfig { ... }
Per ulteriori informazioni sull'utilizzo di Spring async, puoi fare riferimento a questo articolo.
6. @EnableWebSocket
L' annotazione @EnableWebSocket viene utilizzata per configurare l'elaborazione delle richieste di socket Web . La personalizzazione può essere eseguita implementando la classe 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(); } }
Per ulteriori informazioni sull'utilizzo di Spring Websockets, fare riferimento a questo articolo.
7. @EnableJpaRepositories
L' annotazione @EnableJpaRepositories abilita i repository JPA Spring Data esaminando il pacchetto della classe di configurazione annotata per i repository.
@Configuration @EnableJpaRepositories public class JpaConfig { ... }
Alcune opzioni disponibili per questa annotazione sono:
- value - alias per l'attributo basePackages ()
- basePackages - pacchetti di base per la scansione di componenti annotati
- enableDefaultTransactions : configura se abilitare o meno le transazioni predefinite per i repository JPA Spring Data
- entityManagerFactoryRef : configura il nome delladefinizione del bean EntityManagerFactory da utilizzare
8. @EnableTransactionManagement
L' annotazione @EnableTransactionManagement abilita la capacità di gestione delle transazioni basata sull'annotazione di Spring . L'equivalente XML è il spazio dei nomi.
@Configuration @EnableTransactionManagement public class JpaConfig { ... }
Per ulteriori informazioni sull'utilizzo di Spring Transaction Management, puoi fare riferimento a questo articolo.
9. @EnableJpaAuditing
L' annotazione @EnableJpaAuditing abilita il controllo sulle entità JPA .
@Configuration @EnableJpaAuditing public class JpaConfig { @Bean public AuditorAware auditorProvider() { return new AuditorAwareImpl(); } }
Per ulteriori informazioni sull'utilizzo di Spring Web Sockets, fare riferimento a questo articolo.
10. Conclusione
In questo rapido articolo, abbiamo esaminato alcune annotazioni @Enable Spring e come possono essere utilizzate per aiutarci a configurare un'applicazione Spring.