我将一个 Spring 管理的 bean 注入(inject)到一个抽象类中,它似乎不起作用。这是我所做的解释,如果还不够,我可以编辑帖子并添加一些代码:
结果 - 它不工作。
然后我尝试将注入(inject)的bean从抽象类移动到两个子类中。现在它起作用了。
那么,我做错了什么,还是理论上不可能使用 spring 3 和 Java EE 5 将 bean 注入(inject)抽象类?
最佳答案
Is it theoretically impossible to inject a bean into an abstract class with spring 3 and Java EE 5?
依赖注入(inject)发生在对象而不是其类上。 Spring 将依赖项注入(inject)到托管 bean 中,这些 bean 是 Spring 已经实例化的对象。由于无法实例化抽象类,因此在这里考虑 DI 在概念上是错误的。
在一些相关的注释中,您还可以通过添加属性
abstract=true
将非抽象类定义为抽象 Spring bean。到<bean>
标签。这表明该 bean 不会被实例化,并且仅作为其他 bean 可以通过 bean 继承使用的属性模板(这根本与 Java 继承无关)。同样在这种情况下,(如果您已配置它)依赖注入(inject)只会发生在子 bean 而不是它们的父 bean,因为它已被定义为抽象。 (注意:父 bean 不是必须是抽象的,但是当它所做的只是充当一组公共(public) bean 属性时,这样做是有意义的。)
关于spring - 使用spring和java ee 5将bean注入(inject)抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16543108/