Spring框架教程
Spring IOC控制反转
Spring AOP面向切面编程
Spring集成MyBatis
Spring事务
Spring与Web

Spring装配Bean

举例:beanAssemble 项目

Bean的装配,即Bean对象的创建。容器根据代码要求创建 Bean 对象后再传递给代码的过程,称为Bean的装配。

默认装配方式

代码通过getBean()方式从容器获取指定的 Bean实例,容器首先会调用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 定制销毁前的生命行为。

举例:

首先,这些方法需要在 Bean 类中事先定义好:是方法名随意的 public void 方法。

其次,在配置文件的标签中增加如下属性:

init-method:指定初始化方法的方法名

destroy-method:指定销毁方法的方法名

注意,若要看到 Bean 的 destroy-method 的执行结果,需要满足两个条件:

● Bean 为 singleton,即单例

● 要确保容器关闭。接口 ApplicationContext 没有 close()方法,但其实现类有。所以,可以将 ApplicationContext 强转为其实现类对象,或直接创建的就是实现类对象。

全部教程