码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2021-01-25 11:08:15      阅读:0      评论:0      收藏:0      [点我收藏+]

标签: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<String> duties;
  //家庭关系
  private Map<String,String> familyTies;
  //购物车商品
  private Set<String> 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>

    <!-- list注入 -->     <property name="duties">       <list>         <value>IT老师</value>         <value>我儿子的爸爸</value>       </list>     </property>

    <!-- set注入 -->     <property name="carts">       <set>         <value>纸尿裤</value>         <value>玩具</value>       </set>     </property>

    <!-- map注入 -->     <property name="familyTies">       <map>         <entry key="father" value="张某某" />         <entry key="mather" value="钟某某" />       </map>     </property>

    <!-- property注入 -->     <property name="workExperience">       <props>         <prop key="first">电厂职工</prop>         <prop key="second">java开发工程师</prop>         <prop key="third">java讲师</prop>       </props>     </property>

    <!-- null注入 -->     <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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!