markdown
### 基础思想
#### IoC 控制反转(Inversion of Control)
```text
紧耦合系统,单个组件错误,容易造成整个系统错误
IoC 强调的是程序中创建Bean的权利反转给第三方
```
#### DI 依赖注入(Dependency Injection)
```text
某个Bean的完整创建依赖于其他Bean的注入
```
#### AOP 切面编程
```text
是横向的对不同事物的抽象,属性和属性,方法与方法,对象与对象都
可以组成一个切面,而用这种思维去设计编程的方式叫做面向切面编程
```
### 示例代码
```text
ApplicationContext的主要实现类
ClassPathXmlApplicationContext:对应类路径下的XML格式的配置文件
FileSystemXmlApplicationContext:对应文件系统中的XML格式的配置文件
在初始化时就创建单例的bean,也可以通过配置的方式指定创建的Bean是多实例的。
ConfigurableApplicationContext
是ApplicationContext的子接口,包含一些扩展方法
refresh()和close()让ApplicationContext具有启动、关闭和刷新上下文的能力。
WebApplicationContext
专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作
```
```text
Person person = new ClassPathXmlApplicationContext("config.xml").getBean("person",Person.class);
System.out.println(person);
```
```text
# 创建config.xml并配置为Facet
```
### FactoryBean
```text
#重写方法
class ShowInformation implements FactoryBean
```
```text
```
### Bean
#### 生命周期
```text
scope="singleton" 容器初始化时就会创建该Bean
scope="prototype" 会在使用时创建
通过构造器或工厂方法创建bean实例
为bean的属性设置值和对其他bean的引用
调用bean的初始化方法 init
bean使用
当容器关闭时,调用bean的销毁方法 destory
```
#### 后置处理器
```text
允许在调用初始化方法前后对bean进行额外的处理
对IOC容器里的所有bean实例逐一处理,而非单一实例
实现 BeanPostProcessor接口,重写相关方法
```
### 自动装配
```text
根据指定的装配规则,不需要明确指定,Spring自动将匹配的属性值注入bean中
autowire="byName" 根据Bean的name自动装配
autowire="byType" 根据Bean的type自动装配
```
评论