Bean的XML自动装配

  • 自动装配是Spring满足bean依赖一种方式!
  • Spring会在上下文中自动寻找,并自动给bean装配属性!

在Spring中有三种自动装配的方式
1.在xml中显示配置
2.在java中显示配置
3.隐式的自动装配bean

测试
一个人有两个宠物

package com.jialidun.pojo;

public class Cat{
	public void shout(){
		System.out.println("喵~");
	}
}
package com.jialidun.pojo;

public class Dog{
	public void shout(){
		System.out.println("汪~");
	}
}
package com.jialidun.pojo;

@Data	//lombok
public class People{
	private Cat cat;
	private Dog dog;
	private String name;

}

创建beans.xml

<bean id="cat" class="com.jialidun.pojo.Cat"/>
<bean id="dog" class="com.jialidun.pojo.Dog"/>
<bean id="people" class="com.jialidun.pojo.People">
	<property name="name" value="雷伊"/>
	<property name="dog" ref="dog"/>
	<property name="cat" ref="cat"/>
</bean>
@Test
public void test01(){
	ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
	People people = context.getBean("people",People.class);
	people.getDog().shout();
	people.getCat().shout();
}

1.2、ByName自动装配

<bean id="cat" class="com.jialidun.pojo.Cat"/>
<bean id="dog" class="com.jialidun.pojo.Dog"/>
<!--
byName:会自动在容器上下文中查找,和自己对象set方法后面的值对应的beanId!
byName必须要与set后面的值相对应,否则注入失败!
-->
<bean id="people" class="com.jialidun.pojo.People" autowire="byName">
	<property name="name" value="雷伊"/>
</bean>

1.3、byType自动装配

<bean id="cat" class="com.jialidun.pojo.Cat"/>
<bean id="dog" class="com.jialidun.pojo.Dog"/>
<!--
byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean!
使用byType,这个类型必须全局唯一,否则注入失败!
-->
<bean id="people" class="com.jialidun.pojo.People" autowire="byType">
	<property name="name" value="雷伊"/>
</bean>

小结

  • byName的时候,需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法后面的值一致!
  • byType的时候,需要保证所有bean的class唯一,并且这个bean需要和自动注入的属性的类型一致!
上一篇:c#和python版本的protobuf入门


下一篇:Python剑指offer打卡-21