首先需要添加注解方式配置事务
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 注解方式配置事物 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<!-- 拦截器方式配置事物 -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="transactionPointcut" expression="execution(* com.always.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>
controller代码
shopService.insertUserAndShop(shop, adminuser);
ShopServiceImpl代码
@Override
@Transactional(propagation=Propagation.REQUIRED, readOnly=false)
public int insertUserAndShop(Shop shop, ShopAdmin admin) {
// TODO Auto-generated method stub
shopadminMapper.insertSelective(admin);
shopMapper.insertSelective(shop);
return 0;
}
在controller添加controller不起作用的原因是容器先扫描了controller包
<!-- 自动扫描controller包下的所有类,使其认为spring mvc的控制器 -->
<context:component-scan base-package="com.always.controller" />
然后再配置的事务,这个时候事务对controller的注解不起作用