u012220365
首席IT民工
采纳率55%
2017-11-11 04:05 阅读 1.4k
已采纳

Spring注入时如何得知当前Bean注入给哪个对象

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?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    Follow__Heart Follow__Heart 2017-11-11 12:51

    @autowire 默认是通过类型装配bean 的,可以结合使用@Qualifier("className") 使用类名进行装配。
    或者是用@Resource(name="ClassName") 进行注解配置。

    楼主如果想要输出结果为True的话,就需要配置文件中设置类C的属性值,并且类C必须是多例模式。

    点赞 评论 复制链接分享
  • u011350550 xubaodian 2017-11-11 04:57

    若某个接口有两个实现类
    @Service("demo1")
    class DemoImp1 implements Demo{}
    @Service("demo2")
    class DemoImp2 implements Demo{}

    @Resource(name="demo1")
    Demo demo;
    demo注入的是第一个,即DemoImp1图片说明

    点赞 评论 复制链接分享
  • chenxiansheng888 小刀有话说 2017-11-11 06:27

    Autowired 单例的 Resource 多例的 如果有多个相似的实现类 可以用Resource(name=“ ‘’) name起到一个标记的作用

    点赞 评论 复制链接分享
  • danielinbiti danielinbiti 2017-11-11 08:17

    class C需要设置Scope="prototype",不能是单例模式

    点赞 评论 复制链接分享

相关推荐