Spring之DI,DI的定义:依赖注入,给对象的属性赋值。依赖注入有两种方式,这节是第二种方式:通过set方法。

Spring之DI,DI的定义:依赖注入,给对象的属性赋值。依赖注入有两种方式,第一种方式:通过构造器(结合构造方法);第二种方式:通过set方法。
第二种方式实现依赖注入,即通过set方法。需要添加Person.java类文件,一共是6个文件来讲解这个通过set方法实现对象属性的赋值。
1、applicationContext.xml(主配置文件)
2、applicationContext-di.xml(局部配置文件)
3、Penguin.java
4、Master.java(饲养员的类文件)
5、Window.java
6、Person.java

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1、applicationContext.xml(主配置文件)

<?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-2.5.xsd">
    <!-- <import resource="cn/java/ioc1/applicationContext-ioc.xml"/> -->
    <!-- <import resource="cn/java/singleton2/applicationContext-singleton.xml"/>  -->
    <!-- <import resource="cn/java/lazy3/applicationContext-lazy.xml"/>  -->
   <!-- <import resource="cn/java/intAndDestroy4/applicationContext-initAndDestroy.xml"/> -->
        <import resource="cn/java/di5/applicationContext-di.xml"/>
</beans>   

2、applicationContext-di.xml(局部配置文件)

<?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-2.5.xsd">

     <bean id="master" class="cn.java.di5.Master">
          <constructor-arg index="0" type="java.lang.String" value="张三"></constructor-arg>
          <constructor-arg index="1" type="java.lang.String" value="男"></constructor-arg>
     </bean>
     
     <!-- 通过构造器来注入 -->
     <bean id="penguin" class="cn.java.di5.Penguin" >
          <constructor-arg index="0" type="java.lang.String" value="Q仔"></constructor-arg>
          <constructor-arg index="1" type="java.lang.String" value="Q妹"></constructor-arg>
          <constructor-arg index="2" type="java.lang.Integer" value="2"></constructor-arg>
          <constructor-arg index="3" type="cn.java.di5.Master" ref="master"></constructor-arg>
     </bean>
     
     
     <!-- 通过set方式注入 -->
     <bean id="person" class="cn.java.di5.Person">
          <property name="personName" value="王二麻子"></property>
          <property name="age" value="12"></property>
          <property name="list">
             <list>
                  <value>list集合1</value>
                  <value>list集合2</value>
                  <value>20</value>
                  <value>3.14</value>
                  <ref bean="master"/>
             </list>
          </property>
          <property name="set">
             <set>
                  <value>set集合1</value>
                  <value>2.14</value>
                  <ref bean="master"/>
             </set>
          </property>
          <property name="map">
              <map>
                   <entry key="1" value="王二麻子"></entry>
                   <entry key="2" value="李四'"></entry>
                   <entry key-ref="master" value-ref="penguin"></entry>
              </map>
          </property>
     </bean>
</beans>

3、Penguin.java

package cn.java.di5;

public class Penguin {
     private String name;
     private String gender;
     private Integer age;
     private Master master;
     
	public Penguin() {
		super();
		System.out.println("Penguin...无参构造");
	}

	public Penguin(String name, String gender, Integer age) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
		System.out.println("Penguin....有参构造方法1");
	}
	public Penguin(Integer age,String name, String gender) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
		System.out.println("Penguin....有参构造方法2");
	}
    
	
	public Penguin(String name, String gender, Integer age, Master master) {
		super();
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.master = master;
	}

	@Override
	public String toString() {
		return "Penguin [name=" + name + ", gender=" + gender + ", age=" + age + ", master=" + master + "]";
	}

	
	
     
}

4、Master.java(饲养员的类文件)

package cn.java.di5;

/*主人*/
public class Master {
    private String masterName;//主人的姓名
    
    private String gender;//主人的性别

	public Master() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Master(String masterName, String gender) {
		super();
		this.masterName = masterName;
		this.gender = gender;
	}

	@Override
	public String toString() {
		return "Master [masterName=" + masterName + ", gender=" + gender + "]";
	}
    
    
}

5、Window.java

package cn.java.di5;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Window {
	public static void main(String[] args){
	    /*//1、可以通过有参构造方法给对象属性赋值              调用输出
		    Penguin p1=new Penguin("Q仔", "公", 2);
		//2、通过set方法给对象的属性赋值  */	
	  /*ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
      Penguin p1=(Penguin)context.getBean("penguin");
      System.out.println(p1);*/
		
	   ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
	   Person p1=(Person)context.getBean("person");
	   System.out.println(p1);
}
}

6、Person.java

package cn.java.di5;

import java.util.List;
import java.util.Map;
import java.util.Set;

public class Person {
    private String personName;
    private  Integer age;
    private List list;
    private Set set;
    private Map map;
    
	public Person() {
		System.out.println("Person...无参构造方法");
	}
	public String getPersonName() {
		return personName;
	}
	public void setPersonName(String personName) {
		this.personName = personName;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public Set getSet() {
		return set;
	}
	public void setSet(Set set) {
		this.set = set;
	}
	public Map getMap() {
		return map;
	}
	public void setMap(Map map) {
		this.map = map;
	}
	@Override
	public String toString() {
		return "Person [personName=" + personName + ", age=" + age + ", list=" + list + ", set=" + set + ", map=" + map
				+ "]";
	}
    
    
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值