Spring注入不同的属性以及BEAN的作用域

先建立一个Bean:

Code

Spring的配置文件如下:

Code

</beans>

ps:内部bean(inner bean)是指在一个bean的<property/><constructor-arg/>元素中使用<bean/>元素定义的bean。内部bean定义不需要有id或name属性,即使指定id 或 name属性值也将会被容器忽略。

 

属性编辑器如下(实现java.beans.PropertyEditorSupport类的setAsText方法):

Code

 建立单元测试类

Code

测试结果如下:

id:9
name:tom
stringargs:[Ljava.lang.String;@2cb49d
lisrargs:[10002, 10003]
setargs:[中国, 美国, 俄罗斯]
mapargs:{m1=map1, m2=map2, m3=map3}
date:Thu Nov 26 00:00:00 CST 2009

在单元测试中添加新的方法:

@Test
  
public void isSameTest(){
       Bean bean1
=(Bean)context.getBean("Bean");
        Bean bean2
=(Bean)context.getBean("Bean");
        
if(bean1==bean2){
            System.out.println(
"bean1==bean2");
        }
else{
            System.out.println(
"bean1!=bean2");
        }
    }

测试结果为:bean1==bean2

这是因为Bean的作用域,默认为singleton,所以每次调用getBean()都返回同一个实例,处于线程安全考虑,可以把bean的scope设置prototype,这样就会返回不同的实例。

<bean id="Bean" class="zhuru.Bean" scope="prototype">

重新测试结果为:bean1!=bean2

posted @ 2009-11-26 10:26  Fskjb  阅读(1685)  评论(0编辑  收藏  举报
年年行好运