@Service在继承的时候,怎么用?

源码客栈 论文问答 1

interface A { void say(); } @Service class A1 implements A { void say(){System.out.println('A1');} } interface B extends A{ void say(); } @Service class B1 extends A1 implements B { void say(){System.out.println('B1');} } 报错:No unique bean of type [A] is defined: expected single matching bean but found 2: [B1, A1]

回复

共1条回复 我来回复
  • 源码驿站
    这个人很懒,什么都没有留下~
    评论

    给每个service命名,例如

    @Service("serviceA")
    public class A
    
    @Service("serviceB")
    public class B
    

    在注入的地方,同样要区分好名字,

        @Autowired
        @Qualifier("serviceA")
        A serviceA
    

    默认情况下,spring会帮你以接口名小驼峰形式注入Bean,如果出现多个Bean实现了相同的类,那就要这样区分了。 实际业务上,应该尽量避免这种情况,以免引入不必要的麻烦,一般,你这个例子属于不合理的设计。

    0条评论

发表回复

登录后才能评论