<beans>
<description>
spring bean configuration sample
</description>
<bean
id="theaction"
class="net.xiaxin.spring.qs.upperaction"
singleton="true"
init-method="init"
destroy-method="cleanup"
depends-on="actionmanager">
<property name="message">
<value>hello</value>
</property>
<property name="desc">
<null/>
</property>
<property name="datasource">
<ref local="datasource"/>
</property>
</bean>
<bean id="datasource" class="org.springframework.jndi.jndiobjectfactorybean">
<property name="jndiname">
<value>java:comp/env/jdbc/sample</value>
</property>
</bean>
</beans>
1、 id
java bean在beanfactory中的唯一标识,代码中通过beanfactory获取javabean实例时需以此作为索引名称。
2、 class
java bean 类名
3、 singleton
指定此java bean是否采用单例(singleton)模式,如果设为“true”,则在beanfactory作用范围内,只维护此java bean的一个实例,代码通过beanfactory获得此java bean实例的引用。反之,如果设为“false”,则通过beanfactory获取此java bean实例时,beanfactory每次都将创建一个新的实例返回。
4、init-method
初始化方法,此方法将在beanfactory创建javabean实例之后,在向应用层返回引用之前执行。一般用于一些资源的初始化工作。
5、destroy-method
销毁方法。此方法将在beanfactory销毁的时候执行,一般用于资源释放。
6、 depends-on
bean依赖关系。一般情况下无需设定。spring会根据情况组织各个依赖关系的构建工作(这里示例中的depends-on属性非必须)。只有某些特殊情况下,如javabean中的某些静态变量需要进行初始化(这是一种badsmell,应该在设计上应该避免)。通过depends-on指定其依赖关系可保证在此bean加载之前,首先对depends-on所指定的资源进行加载。
7、 <value>
通过<value/>节点可指定属性值。beanfactory将自动根据java bean对应的属性类型加以匹配。下面的”desc”属性提供了一个null值的设定示例。注意<value></value>代表一个空字符串,如果需要将属性值设定为null,必须使用<null/>节点。
8、 <ref>
指定了属性对beanfactory中其他bean的引用关系。示例中,theaction的datasource属性引用了id为datasource的bean。beanfactory将在运行期创建datasource bean实例,并将其引用传入theaction bean的datasource属性。
下面的代码演示了如何通过beanfactory获取bean实例:
inputstream is = new fileinputstream("bean.xml");
xmlbeanfactory factory = new xmlbeanfactory(is);
action action = (action) factory.getbean("theaction");
此时我们获得的action实例,由beanfactory进行加载,并根据配置文件进行了初始化和属性设定。