Spring中的依赖注入(DI)

Set注入

set注入依靠的是反射实体类中set方法来进行对参数的赋值与修改
Spring根据实体类中不同的参数类型也有不同的操作。

1.常量注入

实体类中:

private String name;
public void setName(String name) {
         this.name = name;
    }

bean配置:

<bean id="user" class="com.nicht.pojo.User">
     <property name="name" value="孙笑川"/>
 </bean>

2.实体类注入(bean注入)

实体类中

private Work work;
public void setwork(Work work) {
         this.work = work;

bean配置:

<bean id="works" class="com.nicht.pojo.Work">
     <property name="work" value="主管"/>
 </bean>
 
 <bean id="user" class="com.kuang.pojo.Student">
     <property name="name" value="孙笑川"/>
     <property name="work" ref="works"/>
 </bean>

3.数组注入

实体类中

 private String[] friends;
 public void setFriends(String[] friends) {
         this.friends = friends;

bean配置:

<bean id="user" class="com.nicht.pojo.User">  
     <property name="friends">
         <array>
             <value>韩金龙</value>
             <value>卢本伟</value>
             <value>陈义</value>
         </array>
     </property>
 </bean>

4.List注入

实体类中:

 private List<String> hobbys;
 public void setHobbys(List<String> hobbys) {
         this.hobbys =hobbys;
 

bean配置:

<property name="hobbys">
     <list>
         <value>吃饭</value>
         <value>睡觉</value>
         <value>游戏</value>
     </list>
 </property>

5.Map注入

实体类中:

 private Map<String,String> city;
 public void setCity(Map<String,String> city) {
         this.city =city;
 

bean配置:

<property name="city">
     <map>
         <entry key="户籍" value="茂名"/>
         <entry key="现居住地" value="芜湖"/>
     </map>
 </property>

6.set注入

实体类中:

private Set<String> number;
public void setNumber(Set<String> number) {
         this.number =number;
<property name="number">
     <set>
         <value>15859438666</value>
         <value>13515266588</value>
         
     </set>
 </property>

7.properties注入

实体类中:

private Properties info;
p  public void setInfo(Properties info) {
         this.info = info;
    }

bean配置

<property name="info">
     <props>
         <prop key="工号">2010254585</prop>
         <prop key="性别"></prop>
         <prop key="姓名">孙笑川</prop>
     </props>
 </property>

8.注意

如果要想属性的值为NULL,则可以在bean中配置

 <property name="name"><null/></property>

P,C命名的注入

p命名c命名注入都是为了简化bean配置的复杂程度,本质上还是可以用set注入代替的

实体类:

public class User {
     private String name;
     private String work;
 
     public void setName(String name) {
         this.name = name;
    }
 
     public void setWork(int work) {
         this.work = work;
    }
 
     @Override
     public String toString() {
         return "User{" +
                 "name='" + name + '\'' +
                 ", work=" + work +
                 '}';
    }
 }

p命名空间

p命名空间需要在头文件导入约束

xmlns:p="http://www.springframework.org/schema/p"

bean配置:

<bean id="user" class="com.nicht.pojo.User" p:name="孙笑川" p:work="清洁工"/>
  • p命名空间还是依靠set方法来进行注入

c命名空间

c命名空间也需要在头文件导入约束

xmlns:c="http://www.springframework.org/schema/c"

bean配置

<bean id="user" class="com.nicht.pojo.User" c:name="韩金龙" c:work="主管"/>
  • c命名空间靠的是构造注入,实体类必须有有参构造,才能够使用c命名空间,否则会报错
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值