实例化一个 Bean,也就是我们常说的 new 。
IOC 依赖注入
按照上下文对实例化的 Bean 进行配置,也就是 IOC 注入 。
实现
如果这个 Bean 已经实现了接口,会调用它实现的 ()方法,此处传递的就是配置文件中 Bean 的 id 值
实现
如果这个 Bean 已经实现了接口,会调用它实现的 ,
()传递的是工厂自身(可以用这个方式来获取其它 Bean,只需在配置文件中配置一个普通的 Bean 就可以) 。
are 实现
如果这个 Bean 已经实现了 are 接口,会调用t()方法,传入上下文(同样这个方式也可以实现步骤 4 的内容,但比 4 更好,因为是的子接口,有更多的实现方法)
接口实现-初始化预处理
如果这个 Bean 关联了接口,将会调用( obj,s)方法, 经常被用作是 Bean 内容的更改,并且由于这个是在 Bean 初始化结束时调用那个的方法,也可以被应用于内存或缓存技术 。
init-
如果 Bean 在配置文件中配置了 init- 属性会自动调用其配置的初始化方法 。
如果这个 Bean 关联了接口,将会调用( obj,s)方法 。
注:以上工作完成以后就可以应用这个 Bean 了,那这个 Bean 是一个的,所以一般情况下我们调用同一个 id 的 Bean 会是在内容地址相同的实例,当然在配置文件中也可以配置非。
过期自动清理阶段
当 Bean 不再需要时,会经过清理阶段,如果 Bean 实现了这个接口,会调用那个其实现的 ()方法;
- 自配置清理
最后,如果这个 Bean 的配置中配置了 - 属性,会自动调用其配置的销毁方法 。
bean生命周期方法
bean 标签有两个重要的属性(init- 和 -) 。用它们你可以自己定制
初始化和注销方法 。它们也有相应的注解(@ 和@) 。
什么是的内部bean?什么是 inner beans?
在框架中,当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean 。
内部bean可以用注入“属性”和构造方法注入“构造参数”的方式来实现,内部bean通常是匿名的,它们的Scope一般是 。
【Spring MVC】
文章插图
依赖注入四种方式构造器注入
/*带参数,方便利用构造器进行注入*/public CatDaoImpl(String message){this. message = message;}
方法注入
public class Id {private int id;public int getId() { return id; }public void setId(int id) { this.id = id; }}
静态工厂注入
静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让管理所有对象,我们不能直接通过"工程类.静态方法()"来获取对象,而是依然通过注入的形式获取:
public class DaoFactory { //静态工厂public static final FactoryDao getStaticFactoryDaoImpl(){return new StaticFacotryDaoImpl();}}public class SpringAction {private FactoryDao staticFactoryDao; //注入对象//注入对象的 set 方法public void setStaticFactoryDao(FactoryDao staticFactoryDao) {this.staticFactoryDao = staticFactoryDao;}}