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