java

位置:IT落伍者 >> java >> 浏览文章

Spring容器对Bean组件的管理


发布日期:2019年01月03日
 
Spring容器对Bean组件的管理

Bean对象创建时机默认是随容器创建通过lazyinit可以改变对象实例化时机

(a)默认lazyinit=default||false:

当spring容器实例化的时候并把

容器中对象全部完成实例化

<bean id=bean class=comtarenaentityBean lazyinit=false/>

(b)lazyinit=true

当从spring容器中获取对象时候在对对象

实例始化

(c)设置全局defaultlazyinit=true

整个配置文件中对象都实例化延迟

<beans …

defaultlazyinit=true>

</beans>

注意在使用定时器的时候不能使用lazyinit=true

Bean对象的创建模式

singleton:spring容器对象默认是单例模式每次只成一个实例

<bean id= class= scope=singleton/> struts:

prototype:多例spring容器会每次都为对象产生一个新实例

<bean id= class= scope=prototype/> struts:

scope:在web开发中使用requestsession

回顾

会话与服务器端多次请求和响应过程

pageContext:当前页面

session:一次会话

request:一次请求

application:整个应用服务器

测试类

[java]

public class Bean {

public void show(){

Systemoutprintln(我是一个豆子

}

public Bean() {

Systemoutprintln(我出生了

}

public static void main(String[] args) {

ApplicationContext ac = new

FileSystemXmlApplicationContext(classpath:applicationContextxml

Bean bean = (Bean)acgetBean(bean

Bean bean = (Bean)acgetBean(bean

if(bean == bean){

Systemoutprintln(单例

}else{

Systemoutprintln(多例

}

}

}

当配置文件中<bean id=bean class=comtarenaentityBean/>

运行结果

我出生了

单例

当配置文件中<bean id=bean class=comtarenaentityBean scope=prototype/>

运行结果

我出生了

我出生了

多例

Bean对象初始化和销毁

(a)在spring配置文件定义销毁方法和初始化方法

<bean initmethod=init destroymethod=destroy>

(b)在Bean 对象中定义销毁方法和初始化方法

public void init(){}

public void destroy(){}

(c)spring容器自动调用销毁方法和初始化方法

注意销毁方法在spring容器销毁才去调用

AbstractApplicationContext提供销毁容器方法

close()//销毁容器

Bean对象时多例不支持destroy(){}销毁

scope=prototype

测试类

[java]

public class Bean {

public void show(){

Systemoutprintln(我是一个豆子

}

public Bean() {

Systemoutprintln(我出生了

}

//定义初始化方法

public void init(){

Systemoutprintln(执行init方法

}

public void destroy(){

Systemoutprintln(执行destroy

}

public static void main(String[] args) {

AbstractApplicationContext ac = new

FileSystemXmlApplicationContext(classpath:applicationContextxml

Bean bean = (Bean)acgetBean(bean

beanshow()

acclose()

}

}

当配置文件中<bean id=bean class=comtarenaentityBean initmethod=init destroymethod=destroy />

运行结果

我出生了

执行init方法

我是一个豆子

执行destroy

当配置文件中<bean id=bean class=comtarenaentityBean initmethod=init destroymethod=destroy scope=prototype/>

运行结果

我出生了

执行init方法

我是一个豆子

               

上一篇:eclipse新特性--JFace Data Binding

下一篇:springMVC之annotation优化