一 列举几个@Enable*注解的功能
- @EnableAspectJAutoProxy:开启对AspectJ自动代理的支持。
- @EnableAsync:开启异步方法支持。
- @EnableScheduling:开启计划任务
- @EnableWebMvc:开启Web Mvc配置功能
二 点睛
通过简单的@Enable*来开启一项功能的支持,从而避免自己配置大量的代码,大大降低了使用难度。
通过观察这些@Enable*注解的源码,会发现所有的注解都有一个@Import注解,该注解是用来导入配置类的,这也意味着这些开启的实现是导入了一些自动配置的Bean。
这些导入方式分三类,我们一探究竟。
三 导入配置类方式
1 直接导入配置类
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(SchedulingConfiguration.class)
@Documented
public @interface EnableScheduling {
}
直接导入配置类SchedulingConfiguration,SchedulingConfiguration注解了@Configuration,且注册了ScheduledAnnotationBeanPostProcessor的Bean,源码如下:
@Configuration
public class SchedulingConfiguration {
@Bean(name = TaskManagementConfigUtils.SCHEDULED_ANNOTATION