1.2容纳你的bean
spring容器分为beanFactory和ApplicationContext
- beanFactory是最简单的容器提供基本的DI支持
- ApplicationContext基于BeanFactory构建并提供应用框架级别的服务,例如从属性文件里解析文本信息以及发布应用事件给感兴趣的事件监听者
1.2.1 使用应用上下文
ApplicationContext分为以下几种
- AnnotationConfigApplicationContext:从一个或多个基于Java的配置类中加载Spring应用上下文
- AnnotationConfigWebApplicationContext:从一个或多个基于Java的配置类中加载Spring Web应用上下文
- ClassPathXmlApplicationContext:从类路径下的一个或者多个XML配置文件中加载上下文定义,把应用上下文的定义文件作为类资源
- FileSystemXmlApplicationContext:从文件系统下的一个或者多个XML配置文件中加载上下文定义
- XmlWebAppApplicationContext:从web应用下的一个或多个XML配置文件中加载上下文定义
ClassPathXmlApplicationContext和FileSystemXmlApplicationContext的区别在于加载时前者是在系统根目录下寻找xml文件,而后者是在当前项目中寻找xml文件
当上下文加载好之后就可以使用如getbean()之类的方法。
1.2.2 bean的生命周期
传统的java应用中bean的生命周期为:
- new创建
- 使用
- java自动进行回收机制
Spring中bean的生命周期为:
- 创建
- 实例化
- 填充属性
- 调用BeanNameAware的setBeanName()方法
- 调用BeanFactoryAware的serBeanFactory()方法
- 调用ApplicationContextAware的serApplicationContext()方法
- 调用BeanPostProcessor的预初始化方法
- 调用InitializingBean的afterPropertiesSet()方法
- 调用自定义初始化方法
- 调用BeanPostProcessor的初始化后方法
- 使用
- 关闭
1.调用DisposableBean的destroy()方法
2.调用自定义的销毁方法
1.3 俯瞰Spring风景线
1.3.1 Spring模块
- Spring核心容器
- Spring的AOP模块
- 数据访问与集成
- Web与远程调用
- 测试