加载ApplicationContext的几种方式:
- AnnotationConfigApplicationContext;(从java配置类中加载Spring应用上下文)
- AnnotationConfigWebApplicationContext;(从java配置类中加载SpringWeb应用上下文)
- ClassPathXmlApplicationContext;(从类路径下的xml配置文件中加载Spring应用上下文)
- FileSystemXmlApplicationContext;(从文件系统下的xml配置文件中加载Spring应用上下文)
Bean的一些注解:
- @Bean:定义Bean对象
- @Conditional(..):满足条件才注入Bean,条件是实现Condition接口的类。也可以注解到类
- @Scope:
- singleton,单实例(默认),应用上下文创建时创建
- prototype,多实例,每次获取时创建
- request,一个请求创建一个实例,(可以添加一个proxyMode)
- session,一个会话创建一个实例,(可以添加一个proxyMode)
- @Lazy:懒加载,针对singleton,在用时才创建Bean
Bean的生命周期:
——>constructor实例化对象
——> 填充属性(@Value,@Autowired)
——> 调用Aware接口的setXXX()
——> 调用BeanPostProcessor接口的postProcessBeforeInitialization()
——> 调用InitializingBean接口的afterPropertiesSet()
——> 调用自定义的initMethod方法
——> 调用BeanPostProcessor的postProcessAfterInitialization()
——> 使用Bean
——>调用DisposableBean的destroy()
——> 调用自定义的destroyMethod方法