我正在将一个Spring管理的bean注入一个抽象类,它似乎不起作用。以下是我所做的解释,如果还不够,我可以编辑帖子并添加一些代码:
结果 - 它不起作用。
然后我尝试将注入的bean从抽象类移动到两个子类中。现在它有效。
那么,我做错了什么,或者理论上不可能将bean注入Spring 3和Java EE 5的抽象类中?
答案 0 :(得分: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属性时,它是有意义的。)