1、ApplicationContext配置
<context:component-scan base-package="com.TxDemo"/>
<context:property-placeholder location="classpath:dbConfig.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
<property name="driverClass" value="${jdbc.driverClass}"/>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg name="dataSource" ref="dataSource"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
2、Service
@Service(value = "bookService")
public class BookService {
@Autowired
BookDao bookDao;
@Transactional
public void checkout(String userName, String ISBN, Integer number) {
bookDao.updateStock(ISBN, number);
float price = bookDao.getPrice(ISBN);
bookDao.updateBalance(userName, price * number);
}
}
3、总结
- 配置Spring的事务控制管理器DataSourceTransactionManager
- 开启基于注解的声明式事务控制,依赖tx命名空间
- 给事务方法加注解:@Transactional