我有一个关于如何通过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我的接口实现时,它应该能够选择我的实现类,并应该向我展示业务方法。当我使用合格时,它不是魔术。我只想从春天通过反思向我展示商业方法。
答案 0 :(得分:0)
准确注入A
有什么意义?你可能希望Spring做某种"魔术"当它注入依赖。它不是。我会简单地注入你需要的bean,如果它可以注入它。在您的情况下,Qualifer
值给出了关于哪个bean实例spring注入的提示。
除了拼写错误(@Autowired
而不是@Autowire
),此代码确实应该注入B
和C
。但是当你在代码中宣称它们是A
时,你基本上会得到一个简单的java.lang.Object
。这只是Java的基本原则,是强类型语言。