Spring&Spring MVC技术分享-自动装配:byName
作者:
22-426
,
2022-03-23 16:46:14
,
所有人可见
,
阅读 132
C02_D06_Autowire_byName
byName自动装配,是对依赖的bean来说的.简单值的注入,还是要显示装配
//bean
public interface Person {
void kanChai();
}
public class Girl implements Person {
private String name;
private Axe axe; //砍柴需要一把斧子,所以依赖一个Axe对象
private Pet pet; //砍柴带一只宠物,所以依赖一个Pet对象
public void setName(String name) {
this.name = name;
}
public void setAxe(Axe axe) {
this.axe = axe;
}
public void setPet(Pet pet) {
this.pet = pet;
}
@Override
public void kanChai() {
System.out.println("砍柴人:"+name);
System.out.println("Girl砍柴,力气更大!!!");
axe.cut(); //使用斧子砍柴
pet.showSkill(); //宠物使用技能
}
}
public interface Axe {
void cut();
}
public class StoneAxe implements Axe{
@Override
public void cut() {
System.out.println("石斧砍柴,不是一般的慢!!!");
}
}
public interface Pet {
void showSkill();
}
public class Pig implements Pet{
@Override
public void showSkill() {
System.out.println("宠物猪技能:撞树,方便砍柴!");
}
}
//config-beans.xml
<bean id="axe" class="com.qdu.bean.StoneAxe" />
<bean id="pet" class="com.qdu.bean.Pig" />
<!-- 在bean标记中使用autowire属性可以指定自动装配的方式 -->
<!-- byName是按照名称自动装配:如果待装配bean的属性名称和依赖的bean的id或name相同,则自动装配成功 -->
<bean id="person" class="com.qdu.bean.Girl" autowire="byName">
<property name="name" value="小明" />
<!--选中代码 ctrl+shift+/注释 ctrl+shift+\ 取消注释 -->
<!-- 这里代码注释掉了,也就是没有使用显式装配 -->
<!-- <property name="axe" ref="fuzi" /> -->
<!-- <property name="pet" ref="chongwu" /> -->
</bean>
//main
public static void main(String[] args) {
ApplicationContext ctx
=new ClassPathXmlApplicationContext("config/beans.xml");
Person person=ctx.getBean(Person.class);
Person person1=ctx.getBean(Girl.class);
Person person2=(Person) ctx.getBean("person");
person.kanChai();
person1.kanChai();
person2.kanChai();
}