IOC控制反转:主动的new资源变为被动的接收资源
DI依赖注入:容器能知道哪个组件类运行的时候,需要另外一个类(组件),容器通过反射的形式,将容器中准备好的xxxService对象注入到servlet
将javabean注册到spring配置文件中再使用,根据spring的配置文件得到IOC容器对象,容器中对象的创建在容器创建并启动的时候就已完成。
IOC容器为创建的对象赋值有两种方式:
- property标签(用setter方法设置)
- constructor-arg标签(用有参构造器进行设置)
添加bean的形式有两种:内部bean,外部bean
bean的作用域:单实例,多实例
- prototype:多实例的,容器启动默认不会去创建多实例bean,获取的时候创建这个bean,每次获取都会创建一个新对象
- singleton:单实例的,在容器启动完成之前就已经创建好对象,保存在容器中了,任何获取都是获取之前创建好的那个对象
工厂模式:工厂帮我们创建对象,有一个专门帮我们创建对象的类(工厂)
AirPlane ap = AirPlaneFactory.getAirPlane(String name)
静态工厂:工厂本身不用创建对象,通过静态方法调用
对象 = 工厂类.工厂方法名();
实例工厂:工厂本身需要创建对象
工厂类 工厂对象 = new 工厂类();
工厂对象.getAirPlane(" ");
实现了FactoryBean接口的类是spring可以认识的工厂类(在spring配置文件中注册)
spring会自动的调用工厂方法创建实例(只有在获取的时候才创建)
Bean的生命周期:默认单例
单例:(容器启动)构造器–>初始化方法–>(容器关闭)销毁方法
多实例:获取bean(构造器–>初始化方法)–>容器关闭 不会调用销毁方法
实现BeanPostProcessor接口的类,注册到全局配置文件,可在初始化方法前后调用两个方法
后置处理器(可在初始化前后做一些干预):
(容器启动)构造器–>后置处理器before–>初始化方法–>后置处理器after–>bean初始化完成