Spring4_03_依赖注入方式

依赖注入:通过xml配置文件为生成的类注入值,具体概念:依赖注入的深度理解

spring提供的几种依赖注入的方式:

  1. 属性注入
  2. 构造方法注入
  3. 工厂方法注入
  4. 泛型依赖注入

属性注入  


直接用实例来说明:

 新建Person类,包名为entity,属性有 id,name,age.

package com.java.entity;

public class Person {
	private int id;
	private String name;
	private int age;
	
	
	public Person() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Person(int id, String name, int age) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	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;
	}
	@Override
	public String toString() {
		return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}

xml添加:

	<bean id="person1" class="com.java.entity.Person">
		<property name="id" value="1"></property>
		<property name="name" value="小一"></property>
		<property name="age" value="11"></property>
	</bean>

测试:

package com.java.test;

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

import com.java.entity.Person;


public class iocTest {

	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
		Person person1 = (Person)ac.getBean("person1");
		System.out.println(person1);
	}
}

运行:

 


构造方法注入


构造方法注入分3类:

  1. 通过类型 
  2. 通过索引
  3. 联合注入

    1.通过类型

<bean id="person2" class="com.java.entity.Person">
	<constructor-arg type="int" value="2"></constructor-arg>
	<constructor-arg type="String" value="小二"></constructor-arg>
	<constructor-arg type="int" value="22"></constructor-arg>
</bean>

   2.通过索引

注意:标号从0开始

扫描二维码关注公众号,回复: 2332518 查看本文章
<bean id="person3" class="com.java.entity.Person">
	<constructor-arg index="0" value="3"></constructor-arg>
	<constructor-arg index="1" value="小三"></constructor-arg>
	<constructor-arg index="2" value="33"></constructor-arg>
</bean>

   3.联合注入 

<bean id="person4" class="com.java.entity.Person">
	<constructor-arg index="0" type="int" value="4"></constructor-arg>
	<constructor-arg index="1" type="String" value="小四"></constructor-arg>
	<constructor-arg index="2" type="int" value="44"></constructor-arg>
</bean>

测试:

    //构造方法注入
    Person person2 = (Person)ac.getBean("person2");
    System.out.println(person2);
    Person person3 = (Person)ac.getBean("person3");
    System.out.println(person3);
    Person person4 = (Person)ac.getBean("person4");
    System.out.println(person4);

运行:


工厂方式注入


工厂方式注入分为:

  1. 非静态工厂注入
  2. 静态工厂注入

非静态工厂注入

新建factory包-->新建PersonFactory类--->新建createPerson方法 

 PersonFactory类:

package com.java.factory;

import com.java.entity.Person;

public class PersonFactory {

	public Person createPerson() {
		Person p = new Person();
		p.setId(5);
		p.setName("小五");
		p.setAge(55);
		return p;
	}
}

 xml:

<bean id="personFactory" class="com.java.factory.PersonFactory"></bean> 
<bean id="person5" factory-bean="personFactory" factory-method="createPerson"></bean>

静态工厂注入

新建PersonFactory2类--->新建createPerson方法 

 PersonFactory2:

package com.java.factory;

import com.java.entity.Person;

public class PersonFactory2 {

	public static Person createPerson() {
		Person p = new Person();
		p.setId(6);
		p.setName("小六");
		p.setAge(66);
		return p;
	}
}

xml:

<bean id="person6" class="com.java.factory.PersonFactory2" factory-method="createPerson"></bean> 

测试:

		//工厂方法注入
		Person person5 = (Person)ac.getBean("person5");
		System.out.println(person5);
		Person person6 = (Person)ac.getBean("person6");
		System.out.println(person6);

 运行:


小结:

  1. 依赖注入的几种方式,泛型依赖注入后面讲。
  2. 一头扎进String:Java学习路线

猜你喜欢

转载自blog.csdn.net/qq_27163329/article/details/81138483