我有一个问题,Spring 将 DAO 对象的代理注入到服务中,但是这个服务被注入到控制器中,它是具体的类。这不允许我使用服务范围的事务并分别为每个 DAO 调用启动事务。这是我所期望的。
配置:
Controller 是带有 @Controller 注释和构造函数 DI 的类。
服务:
@零件 @Transactional 公共类 UserServiceImpl 实现 UserService { ...}
道:
@零件 @Transactional 公共类 UserDaoImpl 实现 UserDao {
JPA 配置:
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" >
<property name="dataSource" ref="dataSource"/>
<property name="persistenceUnitName" value="xxxPersistenceUnit"/>
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
<tx:annotation-driven />
有人知道为什么会这样吗?