使用spring和java ee 5将bean注入抽象类

use*_*745 8 spring dependency-injection java-ee-5

我正在将一个spring-managed bean注入一个抽象类,它似乎不起作用.这是我所做的解释,如果还不够,我可以编辑帖子并添加一些代码:

  1. 实现java代码 - 1个抽象类,2个继承自它的类,以及要在抽象类中注入和使用的bean,从而实现子类.
  2. 在spring配置中定义bean.
  3. 在spring配置中定义抽象类和2个子类.
  4. 将第一个bean定义为抽象类bean的属性.

结果 - 它不起作用.

然后我尝试将注入的bean从抽象类移动到两个子类中.现在它有效.

那么,我做错了什么,或者理论上不可能将bean注入Spring 3和Java EE 5的抽象类中?

Rav*_*yal 11

从理论上讲,使用spring 3和Java EE 5将bean注入抽象类是不可能的吗?

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

在某种程度上相关的说明中,您还可以通过将属性添加abstract=true<bean>标记来将非抽象类定义为抽象Spring bean .这表明bean不会被实例化,并且只能作为其他bean可以通过bean继承使用的属性模板(根本不涉及Java继承).

在这种情况下,(如果你已经配置了)依赖注入只会发生在子bean而不是它们的父bean上,因为它已被定义为抽象.(注意:父bean不是必须抽象的,但是当它所做的只是作为一组公共bean属性时,它是有意义的.)