Spring&Spring MVC技术分享-Autowired注解自动装配
作者:
22-426
,
2022-03-24 17:10:52
,
所有人可见
,
阅读 152
C02_D09_Annotation_Autowired
//bean
public interface Person {
void kanChai();
}
@Component
public class Girl implements Person {
private String name;
//如果使用@Component等注解注册一个bean,则可以使用@Autowired
//自动装配依赖的bean,@Autowired是按照类型自动装配
//@Autowired注解可用于字段,也就是属性前,这样spring使用反射注入需要的bean
//@Autowired
private Axe axe;
//@Autowired
private Pet pet;
public Girl() {
}
//@Autowired注解可用于构造函数前,这样spring调用构造函数注入需要的依赖
@Autowired
public Girl(Pet pet) {
System.out.println("调用构造函数注入pet属性..................");
this.pet = pet;
}
//@Autowired注解可用于setter方法前或任何带该种类型参数的方法前
//则spring调用使用了该注解的方法注入这个依赖
@Autowired
public void setAxe(Axe axe) {
System.out.println("调用setAxe()注入axe属性..................");
this.axe = axe;
}
public void setName(String name) {
this.name = name;
}
public void setPet(Pet pet) {
this.pet = pet;
}
@Override
public void kanChai() {
System.out.println("Girl砍柴,力气更大!!!");
axe.cut();
pet.showSkill();
}
}
public interface Axe {
void cut();
}
@Component
public class SteelAxe implements Axe{
@Override
public void cut() {
System.out.println("钢斧砍柴,很快很快!!!");
}
}
public interface Pet {
void showSkill();
}
//使用@Component等注解也可将一个类注册为spring管理的bean
//等效于在xml文件中使用bean标记注册一个bean
//bean的名称默认是首字母小写的类名
//也可以自行指定bean的名称
//@Component("gou") 这里指定bean的名称为gou
@Component
public class Dog implements Pet{
@Override
public void showSkill() {
System.out.println("宠物狗技能:看着柴!");
}
}
//config-beans.xml
<!-- 使用@Component等注解可以将类注册为spring管理的bean -->
<!-- 但是需要开启包扫描,扫描这些包,这些注解才会起作用 -->
<context:component-scan base-package="com.qdu.bean">
</context:component-scan>
//main
public class Test_使用Autowired注解实现自动装配 {
public static void main(String[] args) {
ApplicationContext ctx=new ClassPathXmlApplicationContext("config/beans.xml");
Person person=ctx.getBean(Person.class);
person.kanChai();
}
}