gpt4 book ai didi

spring - 使用spring和java ee 5将bean注入(inject)抽象类

转载 作者:行者123 更新时间:2023-12-04 06:40:35 34 4
gpt4 key购买 nike

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

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

  • 结果 - 它不工作。

    然后我尝试将注入(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/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com