DI的注入方式

DI注入

1.构造方法注入

在xml文件中配置

1.1<constructor-arg />表示法

<bean id="person" class="com.yc.bean.Person">

<constructor-arg type="String" value="bobo" />

<constructor-arg type="double" value="42.0" />

<constructor-arg type="double" value="42.0" />

</bean>

根据bean中的构造函数中的参数定义:type=参数名,value=定义的参数值

bean:

public class Person {

private String name;

private double height;

private double weight;

public Person(String name, double height, double weight) {

super();

this.name = name;

this.height = height;

this.weight = weight;

}

}

1.2 c-namespace 表示法

<bean id="bar" class="x.y.Bar"/>

  <bean id="baz" class="x.y.Baz"/>

<bean id="foo" class="x.y.Foo">

        <constructor-arg ref="bar"/>

       <constructor-arg ref="baz"/>

        <constructor-arg value="foo@bar.com"/>

</bean>

可替换为 ,构造函数的参数依次写入

<bean id="foo" class="x.y.Foo" c:bar-ref="bar" c:baz-ref="baz" c:email="foo@bar.com"/>

2.set方法注入

2.1<property/>注入

同样,在引用其他bean时,通过set方法来注入

public class Classes {

private Person person ;

public Person getPerson() {

return person;

}

public void setPerson(Person person) {

this.person = person;

}

}

 

xml中

<bean id="person" class="com.yc.bean.Person">

</bean>

<bean name="classes" class="com.yc.bean.Classes">

  <property name="name" ref="person" /> //引入

  <property  name = "claid"   value="12" />  //直接注入

</bean>

 

2.2 p-namespace p短名注入

<bean name="cla" class="com.yc.bean.Classes">

<property name="name" value="foo@bar.com" />

<property name="person" ref = "person" />

</bean>

替代为

<bean name="p-namespace" class="com.yc.bean.Classes" p:name="foo@bar.com" p:spouse-ref="person"/>

p:属性名    

p:spouse-ref:要引入的bean id

 

3.集合注入

public class TestData {

private Properties adminEmails ;

private List someList ;

private Map someMap ;

private Set someSet;

 

.......(其他set方法和toString方法略...)

}

 

在xml中注入

<bean id="testData" class="com.yc.test.TestData">

          <property name="adminEmails">

             <props>

                   <prop key="键">值</prop>

                    <prop key="support">support@example.org</prop>

                   <prop key="development">development@example.org</prop>

            </props>

       </property>

<property name="someList">

       <list>

            <value>值:a list element followed by a reference</value>

       </list>

</property>

 

<property name="someMap">

      <map>

            <entry key="键名" value="键值" />

            <entry key="a ref" value-ref="dataSourcePool" />

   </map>

</property>

 

      <property name="someSet">

             <set>

                   <value>值</value>

            </set>

    </property>

</bean>

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值