Spring反向控制(Ioc)--2

1.    通过set方法注入依赖

1)    简单值注入

public void setUserName(String userName){…}

public String getUserName(){…}

public void setAge(int age){…}

public int getAge(){…}

<bean id=”user” class=”cn.com.book.demo.User”>

  <property name=”userName”>

    <value>Noble Yang</value>

  </property>

  <property name=”age”>

    <value>30</value>

  </property>

</bean>

2)    引用其它Bean

public void setUser(User user){…}

public User getUser(){…}

<bean id=”userDAO” class=”cn.com.book.demo.UserDAO”>

  <property name=”user”>――属性名

    <ref bean=”user”/>――被引用的其它bean

  </property>

</bean>

3)    内部Bean

<bean id=”userDAO” class=”cn.com.book.demo.UserDAO”>

  <property name=”user”>

    <bean class=”cn.com.book.demo.User”/>

  </property>

</bean>

这样做的必要是,内部定义的Bean,只能外部的Bean单个用,其它Bean用不了

4)    装配集合

<list>         java.util.List, Arrays

<set>         java.util.Set

<map>        java.util.Map

<props>       java.util.Properties

i)        装配List和数组

public void setList(List list){…}

public List getList(){…}

<bean …>

  <property name=”list”>

<list>

  <value>Noble Yang</value>

  <ref bean=”user”/>

  可以是任何类型

</list>

  </property>

</bean>

ii)       装配Set

<property name=”set”>

  <set>

    List的一样

  </set>

</property>

iii)     装配Map

<property name=”map”>

  <map>

<entry key=”key 1” >

  <value>Noble Yang</value>

</entry>

<entry key=”key 2” >

  <ref bean=”user”/>

</entry>

其它对象

  </map>

</property>

iv)     装配Properties

<property name=”props”>

  <props>

<prop key=”key 1” >value1</prop>

<prop key=”key 2” >value2</prop>

 

  </props>

</property>

5)     设置null

<property name=”userName”>

  <null/>

</property>

6)     

2.    构造器方式注入

1)    一个参数构造器

<bean id=”user” class=”cn.com.book.demo.User”>

  <constructor-arg>

    <value>Noble Yang</value> or <ref bean=”otherBean”/>

  </constructor-arg>

</bean>

2)    多个参数构造器

<bean id=”user” class=”cn.com.book.demo.User”>

  <constructor-arg index=” 0” >

    <value>Noble Yang</value>

  </constructor-arg>

  <constructor-arg index=” 1” >

    <value>30</value>

  </constructor-arg>

</bean>

<bean id=”user” class=”cn.com.book.demo.User”>

  <constructor-arg type=”java.lang.String”>

    <value>Noble Yang</value>

  </constructor-arg>

  <constructor-arg type=”int”>

    <value>30</value>

  </constructor-arg>

</bean>

 

3)     

3.    自动装配

1)    byName――根据名字在容器中寻找同属性名相同的Bean(或ID),找不到不装配

2)    byType――根据属性类型,在容器中找相同类型的Bean,如果没有,就不装配,如果找到多个,抛UnsatisfiedDependencyExcpetion异常

3)    constructor――根据构造器参数类型在容器中寻找,效果同byType一样

4)    autodetect――先用constructor,然后用byType,效果同它们一样

上面四种方式的使用方式如下:

    <bean id=”user” class=”cn.com.book.demo.User”
 autowire=”byName|byType|constructor|autodetect”/>

5)    自动和手动混合装配

<bean id=”user” class=”cn.com.book.demo.User” autowise=”byName”>

  <property name=”age”>

    <value>30</value>

  </property>

</bean>

优先手动装配

6)    缺省自动装配

缺省情况下,bean不会被自动装配,除非在bean标签中指定autowire属性。但是,我们可以在根标签<beans>中指定default-autowire属性,来将所有bean指定成为自动装配

<beans default-autowire=”byName”>

这样所有的bean都是按byName的方式进行自动装配

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值