1

Hibernateとトランザクションを使用したテスト用にSpringを構成しようとしました。@TransactionalトランザクションでマークされたアプリコンテキストからのBeanの取得はインターセプトされません。構成で見逃す可能性があるものは何ですか?

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    <property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

<import resource="spring-dao.xml"/>

<tx:annotation-driven transaction-manager="transactionManager" />


<bean id="userService" class="com.test.service.UserServiceimpl">
    <property name="userDao" ref="userDao"/>
</bean>

public interface UserService {

public abstract User loadUserById(long userId);

@Transactional
public abstract void doSomething();

}

public class UserServiceimpl implements UserService {
@Override
public void doSomething() {
    User user = loadUserById(1);
    user.fillUpMoney(999);
    userDao.update(user);
    throw new RuntimeException("Shpould be rollback");
}
4

2 に答える 2

3

抽象メソッドにトランザクションとして注釈を付けないでください。具体的な実装に注釈を付けてください。

于 2012-01-24T16:47:58.547 に答える
0

BeanFactoryを使用しないでください;)

http://forum.springsource.org/showthread.php?122292-Sprinng-doesnt-intercept-transaction

于 2012-01-25T10:11:51.170 に答える