Spring中如何开启事务?
时间: 2024-02-28 13:57:41 浏览: 24
在Spring中,我们可以通过声明式事务管理或编程式事务管理来开启事务。
1. 声明式事务管理:通过在XML配置文件中定义事务切面,指定需要进行事务管理的方法或类。
示例代码:
```
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="serviceMethods" expression="execution(* com.example.service..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" />
</aop:config>
```
2. 编程式事务管理:通过在代码中使用TransactionTemplate或编程式事务通知来开启事务。
示例代码:
```
@Autowired
private DataSourceTransactionManager transactionManager;
public void save(User user) {
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
userDao.save(user);
}
});
}
```
以上是开启事务的两种方式,选择哪种方式取决于应用程序的需求和个人偏好。