Bean的初始化和销毁
1:java配置方式,使用@Bean中的initMethod(在构造方法之后)和destroyMethod(Bean销毁之前)(相当于xml中配置的init-method和destroy-method)
2:注解方式@PostContruct(在构造函数之后执行)和@PreDestroy(在Bean销毁之前执行)
事件ApplicationEvent
1:自定义监听器,继承ApplicationEvent
2:自定义事件监听器,实现ApplicationListener,指定监听的事件类,使用onApplicationEvent方法对消息进行接受处理
3:使用容器发布事件
Spring Aware
目的是为了让Bean获得Spring容器的服务
BeanNameAware | 获得到容器中Bean的名称 |
BeanFactoryAware | 获得当前bean factory,这样可以调用容器的服务 |
ApplicationContextAware* | 获得当前application context,这样可以调用容器的服务 |
MessageSourceAware | 获得message source,这样可以获得文本信息 |
ApplicationEventPublisherAware | 应用事件发布器,可以发布事件 |
ResourceLoaderAware | 获得资源加载器,可以获得外部资源文件 |
多线程(基于TaskExecutor)
1:利用@EnableAsync注解开启一步任务支持
2:配置类,实现AsyncConfigurer接口,重新getAsyncExecutor方法,并返回一个ThreadPoolTaskExecutor,这样就可以获得一个基于线程池的TaskExecutor
3:通过@Async注解表明该方法是个异步的方法;注解在类级别上,表明该类的方法的所有的方法都是异步方法,这里的方法被自动注入使用TaskPoolTaskExecutor作为TaskExecutor
计划任务
1:@EnableScheduling 注解开启对计划任务的支持
2:@Scheuled声明该方法是计划任务,使用fixedRate属性每隔固定时间执行,cron属性可按照指定时间执行
条件注解@Conditional
@Conditional根据某一特定的条件创建某一个特定的Bean
组合注解和元注解
四大元注解:
1:@Target,表示注解的使用范围
2:@Retention,表示注解的使用时间
3:Documented,描述在使用 javadoc 工具为类生成帮助文档时是否要保留其注解信息。
4:@Inherited,使被它修饰的注解具有继承性(如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解)。
@Enable*注解的工作原理:开启一项功能的支持
@EnableAspectJAutoProxy 开启对AspectJ自动代理的支持
@EnableAsync 开启对异步方法的支持
@EnableScheduling 开启对计划任务的支持
@EnableWebMvc 开启对Web MVC的支持
在@Enable*注解源码中,都有一个@Import注解,@Import注解是为了导入配置类的。
导入配置的三种方式:
1:直接加载配置类
2:根据条件选择配置类
3:动态注册Bean