spring 梳理3--依赖注入DI 构造器注入、set方法注入

2021-03-05 20:27

阅读:577

标签:www   lap   null   add   rgba   cond   构造器   包括   getter   

控制反转(IOC)也叫依赖注入(DI)的核心思想是,构建对象(包括初始化和赋值)都不需要人为操作,而是将这个权利交付给容器来进行。

 

1、构造器注入

 

(1)编写javaBean

public class Dog {
  private String name;
  private int age;
  public Dog(){}
  public Dog(String name, int age) {
    this.name = name;
    this.age = age;
  }
  public String getName() { return name;}
  public void setName(String name) {
    this.name = name;
  }
  public int getAge() { return age; }
  public void setAge(int age) {
    this.age = age;
  }
}

 

 

(2)无参构造

bean id="goldilocks" class="com.xinzhi.entity.Dog" />

 

 

(3)有参构造

注意:value属性注入的是基本类型,如果是引用类型要使用ref连接其他的bean。


bean id="goldilocks" class="com.xinzhi.entity.Dog">
  constructor-arg name="name" value="goldilocks"/>
  constructor-arg name="age" value="11"/>
bean>

 


bean id="goldilocks" class="com.xinzhi.entity.Dog">
  constructor-arg index="0" value="goldilocks"/>
  constructor-arg index="1" value="11"/>
bean>

 


bean id="goldilocks" class="com.xinzhi.entity.Dog">
  constructor-arg value="goldilocks"/>
  constructor-arg value="11"/>
bean>

 


bean id="goldilocks" class="com.xinzhi.entity.Dog">
  constructor-arg type="java.lang.String" value="goldilocks"/>
  constructor-arg type="java.lang.Integer" value="11"/>
bean>

 

 

2、set方法注入

要求被注入的属性 , 必须有set方法 。

set方法的方法名由set + 属性首字母大写

如果属性是boolean类型 , 没有set方法 , 是 is + 属性首字母大写 .

 

 

(1)Address.java

public class Address {
  private String addressInfo;
  public String getAddressInfo() {
    return addressInfo;
  }
  public void setAddressInfo(String addressInfo) {
    this.addressInfo = addressInfo;
  }
}

 

(2)User.java

public class User {
  private String name;
  private Address address;
  //爱好
  private String[] hobbies;
  //职务
  private List duties;
  //家庭关系
  private Map familyTies;
  //购物车商品
  private Set carts;
  //工作经历
  private Properties workExperience;
  //女儿
  private String daughter;
  ...省略setter和getter,toString
}

 

 

(3)配置文件,看各种类型的参数如何注入

xml version="1.0" encoding="UTF-8"?>
beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
  bean id="address" class="com.xinzhi.entity.Address" >
    property name="addressInfo" value="珠琳旺角大厦"/>
  bean>

  bean id="user" class="com.xinzhi.entity.User">          property name="name" value="楠哥" />     property name="address" ref="address"/>

         property name="hobbies">       array>         value>写程序value>         value>value>         value>value>         value>漂亮姑娘value>         value>赢钱value>       array>     property>

         property name="duties">       list>         value>IT老师value>         value>我儿子的爸爸value>       list>     property>

         property name="carts">       set>         value>纸尿裤value>         value>玩具value>       set>     property>

         property name="familyTies">       map>         entry key="father" value="张某某" />         entry key="mather" value="钟某某" />       map>     property>

         property name="workExperience">       props>         prop key="first">电厂职工prop>         prop key="second">java开发工程师prop>         prop key="third">java讲师prop>       props>     property>

         property name="daughter">null />property>   bean> beans>

 

 

 

3. 测试

@Test
public void testDI(){
  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  User user = applicationContext.getBean(User.class);
  System.out.println(user);
}

 

 

技术图片

 

spring 梳理3--依赖注入DI 构造器注入、set方法注入

标签:www   lap   null   add   rgba   cond   构造器   包括   getter   

原文地址:https://www.cnblogs.com/Master-Sun/p/14316741.html


评论


亲,登录后才可以留言!