首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

spring学习札记(4)

2012-10-18 
spring学习笔记(4)我们可以在Spring的配置文件中直接设置Bean的属性值。例如:你的Bean有一个“maxSize”属性,

spring学习笔记(4)
我们可以在Spring的配置文件中直接设置Bean的属性值。例如:你的Bean有一个“maxSize”属性,它表示每页显示数据的最大值,它有一个set方法。代码如下:
private int maxSize;
public void setMaxSize(int maxSize) {
this.maxSize = maxSize;
}
这样,你可以在Bean定义时设置这个属性的值:
<property name="maxSize"><value>20</value></property>
前面介绍了Bean原始类型的属性设置。这种方式已经可以非常有效而便利的参数化应用对象。然而,Bean工厂的真正威力在于:它可以根据bean属性中描述的对象依赖来组装(wire)bean实例。例如:userDao对象的一个属性“sessionFactory”引用了另外一个Bean对象,即userDao对象实例依赖于sessionFactory对象:
  <bean id="userDao"
autowire=”byType”>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
…..
</bean>
注意,在userDao的定义中并没有明确引用sessionFactory。由于它的“autowire”被设置为“byType”,所有只要userDao有一个类型为SessionFactory的属性并有一个set方法,Bean工厂就会自动将sessionFactory组装到userDao中。
如果一个应用有两个数据库,这时就对应有两个SessionFactory。这时autowire="byType"就无法使用了。我们可以使用另外一种自动装配方式“byName”。它将根据属性的名称来匹配依赖对象,这样如果你的配置文件中可以同时存在多个类型相同的SessionFactory,只要他们定义的名称不同就可以了。这种方式的缺点是:需要精确匹配Bean的名称,即必须要保证属性的名称和它所依赖的Bean的名称相等,这样比较容易出错。

如果你希望Bean严格的设置所有的属性,“dependency-check”(依赖检查)属性将会非常有用。它默认为“none”,不进行依赖检查。“simple”会核对所有的原始类型和String类型的属性。“objects”只做对象间的关联检查(包括集合)。“all”会检查所有的属性,包括“simple”和“objects”。
举个例子:一个Bean有如下的一个属性:
private int intVar = 0;
public void setIntVar(int intVar) {
        this.intVar = intVar;
}
这个Bean的配置文件设置了“dependency-check=”simple””。如果这个Bean的配置中没有定义这个属性“intVar”,则在进行这个Bean的依赖检查时就会抛出异常:org.springframework.beans.factory.UnsatisfiedDependencyException。
setXXX()
set方法非常简单,它会给class注入所有依赖的属性。这些属性都必须是在配置文件中使用<property>元素定义,它们可以是原始类型,对象类型(Integer,Long),null值,集合,其它对象的引用。

热点排行