我定义并成功插入了一个捕获所有事务的Hibernate DB Interceptor。
public class HibernateTransactionInterceptor extends EmptyInterceptor {
@Override
public void afterTransactionBegin(Transaction tx) {
System.out.println("Intercepted");
// ...
super.afterTransactionBegin(tx);
}
}
applicationContext.xml:
<bean id="transactionInterceptor" class="myapp.interceptor.HibernateTransactionInterceptor" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- Plug into SessionFactory the Interceptor bean define above -->
<property name="entityInterceptor" ref="transactionInterceptor" />
...
</bean>
现在,拦截器会在所有 @Transaction
个服务方法上触发。但是我只需要拦截@Transaction(readOnly=FALSE)
方法(即,过滤掉所有只读方法)。有没有办法配置它?