class A{
@Autowired
C c;
}
class B{
@Autowired
C c;
}
class C{
String name;
}
class D{
@Autowired
A a;
@Autowired
B b
void print(){
System.out.print("A".equals(a.c.name)&&"B".equals(b.c.name))
}
}
如何能实现调用print后输出true?
@autowire 默认是通过类型装配bean 的,可以结合使用@Qualifier("className") 使用类名进行装配。
或者是用@Resource(name="ClassName") 进行注解配置。
楼主如果想要输出结果为True的话,就需要配置文件中设置类C的属性值,并且类C必须是多例模式。
若某个接口有两个实现类
@Service("demo1")
class DemoImp1 implements Demo{}
@Service("demo2")
class DemoImp2 implements Demo{}
则
@Resource(name="demo1")
Demo demo;
demo注入的是第一个,即DemoImp1
Autowired 单例的 Resource 多例的 如果有多个相似的实现类 可以用Resource(name=“ ‘’) name起到一个标记的作用
class C需要设置Scope="prototype",不能是单例模式