Spring入门实例讲解(2)

来源:互联网 发布:下载西西软件盒 编辑:程序博客网 时间:2024/06/06 05:33

4.三种bean 的生成方式

除了上面使用的类直接生成方式,还有bean 静态工厂及bean 实例工厂。

bean 静态工厂的配置如下:

<bean id="userDaoImpl2" class="com.asm.dao.impl.UserDaoImplFactory"

factory-method="getUserDaoImpl"/>

相应的工厂类代码如下:

packagecom.asm.dao.impl;

public class UserDaoImplFactory {

public static UserDaoImpl getUserDaoImpl(){

return new UserDaoImpl();

}

}

bean实例工厂的配置如下:

<bean id="factory" class="com.asm.dao.impl.UserDaoImplFactory2"/>

<bean id="userDaoImpl3" factory-bean="factory"

factory-method="getUserDaoImpl"/>

相应的工厂类的代码如下:

packagecom.asm.dao.impl;

public class UserDaoImplFactory2 {

publicUserDaoImpl getUserDaoImpl() {

return new UserDaoImpl();

}

}

5.bean 的作用域

singleton:返回bean 的同一个实例,也是默认的作用域(无状态bean 使用此作用域)

prototype:每次请求都会创建一个实例(有状态bean 使用此作用域)

requestsessionglobal session 这三个作用域主要用在web 应用中

6.bean 的生命周期

(1)什么时候初始化bean 实例

scopesingleton,即默认情况,会在装载配置文件时实例化。如果希望在调用getBean

时才初始化,可以使用lazy-init="true" 补充:如果希望希望该配置文件中的所有bean

都延迟初始化,则应在beans 根结点中使用lazy-init="true"

scope=prototype ,在调用getBean()方法时才会初始化。

2)生命周期:

构造器、init 方法、获取bean 后的操作、destroy 方法(ctx.close、注意如果bean scope

设为prototype 时,当ctx.close 时,destroy 方法不会被调用)

7.属性注入Setter 方式

1)简单属性(如String):

<bean id="userServiceBean" class="com.asm.service.UserServiceBean">

<property name="id" value="10"></property>

<property name="username" value="张某某"></property>

</bean>

 

原创粉丝点击