Spring的属性注入(案例+解析)

Spring的属性注入

给Bean当中的属性设置值:
在这里插入图片描述

一、普通类型的注入

1、构造方法的方式的属性注入

<?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">
  	<!-- Spring的属性注入的方式 -->
  	<!-- 构造方法的方式 -->
  	<bean id="car" class="com.itzheng.spring.demo4.Car">
  		<constructor-arg name="name" value="宝马"/>
  		<constructor-arg name="price" value="800000"/>
  	</bean>
</beans>
package com.itzheng.spring.demo4;
public class Car {
	private String name;
	private Double price;
	public Car(String name, Double price) {
		super();
		this.name = name;
		this.price = price;
	}
	@Override
	public String toString() {
		return "Car [name=" + name + ", price=" + price + "]";
	}
}
package com.itzheng.spring.demo4;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/*
 * 属性注入的方式
 */
public class SpringDemo4 {
	@Test
	public void demo1() {
		// 创建工程
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 获得到对应XML当中的对象
		Car car = (Car) applicationContext.getBean("car");
		System.out.println(car);
	}
}

在这里插入图片描述

2、Set方法的方式的属性注入

<?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">
  	<!-- Spring的属性注入的方式 -->
  	<!-- 构造方法的方式 -->
  	<!-- set方法方式符注入 -->
  	<bean id="car2" class="com.itzheng.spring.demo4.Car2">
  		<property name="name" value="奔驰"></property>
  		<property name="price" value="1000000"></property>
  	</bean>
</beans>
package com.itzheng.spring.demo4;
/*
 * set方法的属性注入
 */
public class Car2 {
	private String name;
	private Double price;
	public void setName(String name) {
		this.name = name;
	}
	public void setPrice(Double price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Car2 [name=" + name + ", price=" + price + "]";
	}
}
/*
set方法注入
*/
@Test
	public void demo2() {
		// 创建工程
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 获得到对应XML当中的对象
		Car2 car2 = (Car2) applicationContext.getBean("car2");
		System.out.println(car2);
	}

在这里插入图片描述

二、对象类型注入

1、set方法来注入对象

创建类和对应的set方法

package com.itzheng.spring.demo4;
public class Employee {
	private String name;
	private Car2 car2;
	public void setName(String name) {
		this.name = name;
	}
	public void setCar2(Car2 car2) {
		this.car2 = car2;
	}
	@Override
	public String toString() {
		return "Employee [name=" + name + ", car2=" + car2 + "]";
	}
}

设置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.xsd">
  	<!-- Spring的属性注入的方式 -->
  	<!-- 构造方法的方式 -->
  	<bean id="car" class="com.itzheng.spring.demo4.Car">
  		<constructor-arg name="name" value="宝马"/>
  		<constructor-arg name="price" value="800000"/>
  	</bean>
  	<!-- set方法方式符注入 -->
  	<bean id="car2" class="com.itzheng.spring.demo4.Car2">
  		<property name="name" value="奔驰"></property>
  		<property name="price" value="1000000"></property>
  	</bean>
  	<!-- set方法去注入对象类型的属性 -->
  	<bean id="employee" class="com.itzheng.spring.demo4.Employee">
  	<!-- value是用来设置普通类型的值。ref是用来设置其他类的id 或者name -->
  		<property name="name" value="张三"/>
  		<property name="car2" ref="car2"/>
  	</bean>
</beans>

value是用来设置普通类型的值。
ref是用来设置其他类的id 或者name ref是另外一个普通类型
在这里插入图片描述
在这里插入图片描述

2、构造方法来注入对象

创建类和对应的构造方法

package com.itzheng.spring.demo4;
public class Boos {
	private String name;
	private Car car;
	public Boos(String name, Car car) {
		super();
		this.name = name;
		this.car = car;
	}
	@Override
	public String toString() {
		return "Boos [name=" + name + ", car=" + car + "]";
	}
}
<?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">
  	<!-- Spring的属性注入的方式 -->
  	<!-- 构造方法的方式 -->

  	<bean id="car" class="com.itzheng.spring.demo4.Car">
  		<constructor-arg name="name" value="宝马"/>
  		<constructor-arg name="price" value="800000"/>
  	</bean>
  	<bean id="boos" class="com.itzheng.spring.demo4.Boos">
  		<constructor-arg name="name" value="李四"/>
  		<constructor-arg name="car" ref="car"/>
  	</bean>
</beans>

ref设置对应的类

@Test
	public void demo3() {

		// 创建工程
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");

		// 获得到对应XML当中的对象
		Boos boos = (Boos) applicationContext.getBean("boos");

		System.out.println(boos);

	}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44757034/article/details/107087353