Java Spring没有将DAO注入带有抽象超类的JSF托管bean

Java Spring没有将DAO注入带有抽象超类的JSF托管bean,java,spring,jakarta-ee,dependency-injection,Java,Spring,Jakarta Ee,Dependency Injection,我有一个JSF2.0应用程序,我正在集成Spring,以便可以使用hibernateTemplate。我已经咨询了JSF集成方面的专家,并已采取步骤进行设置。我的所有bean类都扩展了一个名为SuperBean的抽象超类。SuperBean是理想的注入点,它使我不必在春季声明我的所有bean。我希望将其声明为abstract=“true”,任何扩展SuperBean类的子类bean都将注入dao。在运行时它是空的 <bean id="serviceTemplate" class="org.

我有一个JSF2.0应用程序,我正在集成Spring,以便可以使用hibernateTemplate。我已经咨询了JSF集成方面的专家,并已采取步骤进行设置。我的所有bean类都扩展了一个名为SuperBean的抽象超类。SuperBean是理想的注入点,它使我不必在春季声明我的所有bean。我希望将其声明为abstract=“true”,任何扩展SuperBean类的子类bean都将注入dao。在运行时它是空的

<bean id="serviceTemplate" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
   <property name="transactionManager" ref="transactionManager"/>
   <property name="transactionAttributes">
      <props>
         <prop key="*"/>
      </props>
   </property>
</bean>
<bean id="daoServiceTarget" class="com.example.service.DaoService">
       <property name="mainDAO" ref="mainDAO"/>
    </bean>
    <bean id="daoService" parent="serviceTemplate">
       <property name="target" ref="daoServiceTarget"/>
    </bean>    
    <bean id="superBean" class="com.example.beans.SuperBean" abstract="true">
       <property name="daoService" ref="daoService"/>
    </bean>

我能简单地声明这个超类SuperBean并期望Spring注入dao吗?我不想在春季声明每个bean类


我认为另一种选择(从性能角度来看)是不使用Springbean,而是将DAO声明为@applicationScoped,并使用JEE的CDI将它们注入SuperBean类。从性能角度来看,这会更好吗?

在上面的示例中,它看起来像是serviceTemplate提供了一个您想要的示例。注意父项=“serviceTemplate”。您需要做一些类似于从superbean继承的人的事情。还有其他选项,但因为serviceTemplate中有工作代码,所以这可能是最好的开始。然后阅读更多详细信息:

在上面的示例中,它看起来像是serviceTemplate提供了一个您想要的示例。注意父项=“serviceTemplate”。您需要做一些类似于从superbean继承的人的事情。还有其他选项,但因为serviceTemplate中有工作代码,所以这可能是最好的开始。然后阅读更多详细信息:

我添加了ServiceTemplatebean定义。它只是spring提供的另一个抽象类。我希望避免在春季定义每个bean。我的SuperBean类有一个方法setDaoService(DaoService dao){//set attr}。作为子类的所有bean都应该具有DAO,因为子bean是超级bean。这可能吗?我添加了ServiceTemplatebean定义。它只是spring提供的另一个抽象类。我希望避免在春季定义每个bean。我的SuperBean类有一个方法setDaoService(DaoService dao){//set attr}。作为子类的所有bean都应该具有DAO,因为子bean是超级bean。这可能吗?