我有一个JSF 2.0应用程序,并且我正在集成Spring,因此我可以使用hibernateTemplate。我已经咨询了关于JSF集成的Spring documentation,并已采取步骤进行设置。我的所有bean类都扩展了一个名为SuperBean的抽象超类。 SuperBean是需要的注入点,使我无需在Spring中声明所有的bean。我希望只是将其声明为abstract =“true”,并且任何扩展了SuperBean类的子类都将注入dao。在运行时它是空的。Spring没有将DAO注入到具有抽象超类的JSF托管bean中
<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类。
我想替代选项(从性能角度来看)将不使用Spring bean,而是将DAO声明为@applicationScoped并使用JEE的CDI将它们注入到SuperBean类中。这会更好地表现明智吗?
我添加了serviceTemplate bean定义。这只是春季提供的另一个抽象类。我想避免在春季定义每个bean。我的SuperBean类有一个方法setDaoService(DaoService dao){// set attr}。所有属于子类的bean都应该有DAO,因为SubBean是一个SuperBean。这可能吗? – Adam 2011-04-12 03:05:03