使用spring和JavaEE5将bean注入抽象类

使用spring和JavaEE5将bean注入抽象类,spring,dependency-injection,java-ee-5,Spring,Dependency Injection,Java Ee 5,我将一个spring管理的bean注入到一个抽象类中,但它似乎不起作用。以下是我所做的解释,如果还不够,我可以编辑帖子并添加一些代码: 实现java代码-1抽象类、从中继承的2个类以及要在抽象类中注入和使用的bean,从而由子类使用 在spring配置中定义bean 在spring配置中定义抽象类和2个子类 将第一个bean定义为抽象类bean的属性 结果-它不起作用 然后我尝试将注入的bean从抽象类移动到两个子类中。现在它起作用了 那么,是我做错了什么,还是理论上不可能用Spring3和Ja

我将一个spring管理的bean注入到一个抽象类中,但它似乎不起作用。以下是我所做的解释,如果还不够,我可以编辑帖子并添加一些代码:

  • 实现java代码-1抽象类、从中继承的2个类以及要在抽象类中注入和使用的bean,从而由子类使用
  • 在spring配置中定义bean
  • 在spring配置中定义抽象类和2个子类
  • 将第一个bean定义为抽象类bean的属性
  • 结果-它不起作用

    然后我尝试将注入的bean从抽象类移动到两个子类中。现在它起作用了

    那么,是我做错了什么,还是理论上不可能用Spring3和JavaEE5将bean注入抽象类

    从理论上讲,用Spring3和JavaEE5将bean注入抽象类是不可能的吗

    依赖项注入发生在对象而不是其类上。Spring将依赖项注入到托管bean中,这些bean是Spring已经实例化的对象。因为抽象类不能实例化,所以在这里考虑DI在概念上是错误的

    另一方面,您还可以通过将属性
    abstract=true
    添加到
    标记中,将非抽象类定义为抽象Springbean。这表明bean不会被实例化,而只是作为其他bean可以通过bean继承使用的属性模板(这与Java继承完全无关)


    在这个上下文中,(如果您已经配置了它),依赖注入只会发生在子bean上,而不会发生在父bean上,因为它被定义为抽象的。(注意:父bean不一定是抽象的,但当它只是作为一组公共bean属性时,这样做是有意义的。)

    感谢您的回复。但是我读到,在JavaEE6的抽象类中DI是可能的,对吗?被注入的属性可以在抽象类中定义,但是注入只会发生在一个对象上,这意味着它是一个子类对象。