0

我有一个关于如何通过 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 我的接口实现时,它应该能够选择我的实现类并应该向我展示业务方法。当我使用合格的时,它不是魔术。我只想从春天开始通过反思向我展示商业方法。

4

1 回答 1

0

What is the point of injecting A exactly? You probably expect Spring to do some kind of "magic" when it injects the dependency. It does not. I will simply inject the bean that you have required if it can inject it. In your case, the Qualifer value gives a hint as to which bean instance spring injects.

Except the typo (it's @Autowired, not @Autowire), this code should indeed inject B and C. But as you declared them as being A in your code you'll get a simple java.lang.Object basically. That's just a fundamental principle of Java that is strongly typed language.

于 2014-03-27T09:09:36.283 回答