Spring的bean注入

Spring的注入:
(1)setter注入:
Spring中成员list,set,map,props的配置:
一>>>>list和数组的配置:无论类中的属性是一个list还是数组,均需要用<list></list>元素装载此属性
  <property name="testList">
 <list>
  <value>test1</value>
  <ref bean="test1">
 </list>
  </property>
  在spring中使用hibernate持久化对象,需要配置一个LocalSessionFactoryBean,
  这个类中有一个mappingResources属性,由利用list来组装所有的mappingResources文件。例:
  <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
 <property name="mappingResources">
  <list>
   <value>/com/wes/spring/resource/Test1.hbm.xml</value>
   <value>/com/wes/spring/resource/Test2.hbm.xml</value>
   <value>/com/wes/spring/resource/Test3.hbm.xml</value>
  </list>
 </property>
  </bean>
  通过以上配置就达到了在sessionFactory中取到hbm配置文件的目的了。
二>>>>Set的配置:有时为了确保集合中数据的唯一性,需要用到一个java.util.Set的属性,具体配置如下:
 <property name="testSet">
  <set>
   <value>test1</value>
   <ref bean="test1">  <!-- 和list一样set可以装配任何属性的对象 -->
  </set>
        </property>
三>>>>Map属性:很多时候需要用map去存放一些key-->value对,这是java.util.Map类型的属性配置如下:
 <property name="testMap">
  <map>
   <entry key="key1">
    <value>test1</value>
   </entry>
   <entry key="key2"> 
    <ref bean="test2">
   </entry>
  </map>
 </property><!--目前Spring中只允许String类型的为主键-->
四>>>>Properties:java.util.Properties也能通过配置达到初始化的目的:
 <property name="testProps">
  <props>
   <prop key="key1">test1</prop>
   <prop key="key2">test2</prop>
  </props><!-- 所有key value值均为String类型 -->
 </property>
五>>>>设置null,明确将一个属性设置为null
 <property name="test1"><null/></property>

    注:setter注入的缺点是它假设了所有的可变属性都可以通过set方法访问到,也许你不希望自己的Bean是这样的。首先:
当一个bean实例化的时候,它的所有属性都没有设置,它会处于一个不确定状态。其次:有时候要求一些属性的值只能在创建的时候设置一次,以后就不能改变了。一种替代的方法是构造注入。

通常应用:一般在一些比较固定的场合应用,像数据源(DataSource),固定属性(性别),还有其他一些固定属性想配置进来的都可以。

(2)构造注入:
 package com.wes.spring;
 public class Test{
  private String a;
  private String b;
  public Test(String a,String b) {this.a = a; this.b=b}
 }
 具体配置:
 <bean id="test" class="com.wes.spring.Test">
  <constructor-arg index="1">
   <value>bbbb</value>
  <constructor-arg>
  <constructor-arg index="0">
   <value>aaaa</value>
  <constructor-arg>
 </bean><!-- 当有多个参数时用index指定具体要赋的变量,index从0开始,也可以用type(变量类型)指定,但如果参数的类型一样时就没办法用type指定了 -->
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值