Spring配置之属性注入1

跟着视频敲代码,类名对象名属性名都一样,有点小乱。对几个名称微调后测试,做个小总结。

常用的属性注入方式有四种:

  • 构造方法方式属性注入;
  • set方法方式属性注入;
  • P名称空间的属性注入;
  • SpEL的属性注入;

1、构造方法方式属性注入(常用为注入普通类型的属性注入,对象类型的属性注入与set方法注入对象类型的属性相似)

	<!-- 构造方法的方式 -->
	<bean id="car" class="com.itheima.spring.demo4.Car">
		<constructor-arg name="name" value="宝马"/>
		<constructor-arg name="price" value="800000"/>
	</bean>

2、set方法方式属性注入

①set方法注入普通类型的属性

<bean id="car2" class="com.itheima.spring.demo4.Car2">
		<property name="name" value="奔驰"/>
		<property name="price" value="1000000"/>
	</bean>

②set方法注入对象类型的属性

	<bean id="employee" class="com.itheima.spring.demo4.Employee">
		<!-- value:设置普通类型的值,ref:设置其他类型的id或name -->
		<property name="name" value="涛哥"/>
		<property name="car2" ref="car"/>	<!-- 将id="car"对应的类中的属性赋予Car类型的car2(与创建的时候对应) -->
	</bean>

前方高能请注意!

1、value:设置普通类型的值,ref:设置其他类型的id或name。

2、ref中的属性对应的类名(id为car对应的类名)需要和自己使用的类中(对象类型的)变量的类型相同。for example:
public class Employee {
	private String name;
	private Car car2;    //这里创建的是Car类型的对象car2,得与上方的配置分别对应
	
	public void setName(String name) {
		this.name = name;
	}
	public void setCar2(Car car2) {
		this.car2 = car2;
	}
	
	@Override
	public String toString() {
		return "Employee [name=" + name + ", car2=" + car2 + "]";
	}
	
}

测试:

	@Test
	/*
	 * set方法注入对象类型
	 */
	public void demo3() {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		Employee employee = (Employee) applicationContext.getBean("employee");
		System.out.println(employee);
	}

输出:

Employee [name=涛哥, car2=Car [name=宝马, price=800000.0]]

set方法注入对象类型的属性的总结:

1、类中(对象类型的)变量的类型须与ref中的属性对应的类名相同(代码标处)

2、类中(对象类型的)变量名与注入的属性名相同(代码标处)



猜你喜欢

转载自blog.csdn.net/qq_36847713/article/details/80918102