Guida rapida alle annotazioni Spring @Enable

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.