【发布时间】:2011-04-12 02:42:19
【问题描述】:
我有一个 JSF 2.0 应用程序并且我正在集成 Spring,因此我可以使用 hibernateTemplate。我已经咨询了有关 JSF 集成的 Spring documentation 并已采取措施进行设置。我所有的 bean 类都扩展了一个名为 SuperBean 的抽象超类。 SuperBean 是理想的注入点,使我不必在 Spring 中声明所有 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?我不想在 spring 中声明每个 bean 类。
我认为替代选项(从性能角度来看)是不使用 Spring bean,而是将 DAO 声明为 @applicationScoped 并使用 JEE 的 CDI 将它们注入 SuperBean 类。这在性能方面会更好吗?
【问题讨论】:
标签: java spring jakarta-ee dependency-injection