举例:beanAssemble 项目
Bean的装配,即Bean对象的创建。容器根据代码要求创建 Bean 对象后再传递给代码的过程,称为Bean的装配。
代码通过getBean()方式从容器获取指定的 Bean实例,容器首先会调用Bean类的无参构造器,创建空值的实例对象。
举例:
当通过 Spring 容器创建一个 Bean 实例时,不仅可以完成 Bean 的实例化,还可以通过 scope 属性,为 Bean 指定特定的作用域。Spring 支持 5 种作用域。
● singleton:单态模式。即在整个 Spring 容器中,使用 singleton 定义的 Bean 将是单例的, 只有一个实例。默认为单态的。
● prototype:原型模式。即每次使用 getBean 方法获取的同一个的实例都是一个 新的实例。
● request:对于每次 HTTP 请求,都将会产生一个不同的 Bean 实例。
● session:对于每个不同的 HTTP session,都将产生一个不同的 Bean 实例。
注意:
● 对于 scope 的值 request、session 只有在 Web 应用中使用 Spring 时,该作用域才有效。
● 对于 scope 为 singleton 的单例模式,该 Bean 是在容器被创建时即被装配好了。
● 对于 scope 为 prototype 的原型模式,Bean 实例是在代码中使用该 Bean 实例时才进行 装配的。
举例:
可以为 Bean 定制初始化后的生命行为,也可以为 Bean 定制销毁前的生命行为。
举例:
首先,这些方法需要在 Bean 类中事先定义好:是方法名随意的 public void 方法。
其次,在配置文件的标签中增加如下属性:
init-method:指定初始化方法的方法名
destroy-method:指定销毁方法的方法名
注意,若要看到 Bean 的 destroy-method 的执行结果,需要满足两个条件:
● Bean 为 singleton,即单例
● 要确保容器关闭。接口 ApplicationContext 没有 close()方法,但其实现类有。所以,可以将 ApplicationContext 强转为其实现类对象,或直接创建的就是实现类对象。