8

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

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

结果 - 它不工作。

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

那么,我做错了什么,还是理论上不可能使用 spring 3 和 Java EE 5 将 bean 注入抽象类?

4

1 回答 1

11

理论上不可能用spring 3和Java EE 5将bean注入抽象类吗?

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

abstract=true在一些相关的说明中,您还可以通过将属性添加到标记来将非抽象类定义为抽象 Spring bean <bean>。这表明该 bean 不会被实例化,并且仅作为其他 bean 可以通过 bean 继承使用的属性模板(这根本与 Java 继承无关)。

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

于 2013-05-14T12:29:55.893 回答