标记界面与多个实现......!

时间:2014-03-26 21:06:43

标签: spring spring-mvc autowired spring-annotations spring-bean

我有一个关于如何通过spring实现Marker接口的问题。我需要将我的标记接口指向其实现的类。本身标记界面没有任何功能声明。

interface A { 

    /* No Method declaration */ 

}

@Component("c")
Class B implement A {

     void function1(){ .. }
     void function2(){ .. }

}

@Component("c")
Class C implement A {

    void function3(){ .. }
    void function4(){ .. }
}

现在,在我的业务逻辑中,我想通过我的界面使用@Autowire指向任何一个实现。

@Autowired
@Qualifier("b")
A aB;

@Autowired
@Qualifier("c")
A aC;

它不起作用。请你帮忙以正确的方式实施......!我期待反思它应该给我实现的类中可用的方法列表,但它不。

添加了更多详情

我唯一想做的是,我想回复IResponse到我的商业方法,而不是不同的tyoe。如果我需要@Authowired直接执行

,那对我来说没问题

@Autowired B aB;

但我想如果有一些方法我的IDE和Spring做了一些逻辑,当我@Autowired我的接口实现时,它应该能够选择我的实现类,并应该向我展示业务方法。当我使用合格时,它不是魔术。我只想从春天通过反思向我展示商业方法。

1 个答案:

答案 0 :(得分:0)

准确注入A有什么意义?你可能希望Spring做某种"魔术"当它注入依赖。它不是。我会简单地注入你需要的bean,如果它可以注入它。在您的情况下,Qualifer值给出了关于哪个bean实例spring注入的提示。

除了拼写错误(@Autowired而不是@Autowire),此代码确实应该注入BC。但是当你在代码中宣称它们是A时,你基本上会得到一个简单的java.lang.Object。这只是Java的基本原则,是强类型语言。