Spring&Spring MVC技术分享-自动装配:构造函数
作者:
22-426
,
2022-03-23 16:59:27
,
所有人可见
,
阅读 147
C02_D08_Autowire_constructor
//bean
public interface Person {
void kanChai();
}
public class Girl implements Person {
private String name;
private Axe axe;
private Pet pet;
//该构造函数用于实现axe属性和pet属性的自动装配
//构造函数自动装配也是使用的类型,只要构造函数提供了对应的类型即可
//至于构造函数的参数名,随便起
public Girl(Axe a, Pet p) {
this.axe = a;
this.pet = p;
}
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 SteelAxe implements Axe{
@Override
public void cut() {
System.out.println("钢斧砍柴,很快很快!!!");
}
}
public interface Pet {
void showSkill();
}
public class Dog implements Pet{
@Override
public void showSkill() {
System.out.println("宠物狗技能:看着柴!");
}
}
//config-beans.xml
<bean id="fuzi" class="com.qdu.bean.SteelAxe" />
<bean id="chongwu" class="com.qdu.bean.Dog" />
<!-- 在bean标记上使用autowire可以指定自动装配的方式 -->
<!-- constructor表示使用合适的构造函数实现自动装配 -->
<!-- 使用这种方式,需要生成合适的构造函数用于实现自动装配 -->
<bean id="person" class="com.qdu.bean.Girl" autowire="constructor">
<property name="name" value="小明" />
<!-- 这里不使用显式装配 -->
<!-- <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.kanChai();
}