У меня есть приложение JSF 2.0, и я интегрирую Spring, чтобы я мог использовать hibernateTemplate.Я уже ознакомился с документацией Spring по интеграции JSF и предпринял шаги для ее настройки.Все мои классы бобов расширяют абстрактный суперкласс SuperBean.SuperBean - желаемая точка инъекции, избавляющая меня от необходимости объявлять все мои бины весной.Я надеялся просто объявить его как abstract = "true", и любой боб подкласса, расширяющий класс SuperBean, мог бы внедрить дао.Во время выполнения он равен нулю.
<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-бины, а объявлять DAO как @applicationScoped и вставлять ихкласс SuperBean, использующий CDI JEE.Будет ли это лучше с точки зрения производительности?