在Spring中使用@configuration注解进行bean声明时候遇到一个疑惑:
//这是一个父类
public class Parent {
public Parent() {
System.out.println("parent...");
}
}
//子类继承父类
public class Son extends Parent{
public Son() {
super();
System.out.println("son...");
}
}
//进行配置
@Configuration
public class AnnotationConfig {
@Bean
public Son son(){
return new Son();
}
@Bean
public Parent parent(){
return new Parent();
}
}
在单元测试用中进行使用:
ApplicationContext annotationContext = new AnnotationConfigApplicationContext("com.jerry");
运行的结果是:
parent...
parent...
son...
为什么不是:
parent...
son...
parent...
另外,如果在Parent类加上@Scope("protoptype")注解,结果又变成:
parent init...
son...