@transactional注解用法
时间: 2023-11-15 19:05:53 浏览: 106
@transactional注解是Spring框架中用于声明式事务管理的注解,它可以被用于类、方法或者接口上。使用该注解,可以将一个方法或者类的所有方法包装成一个事务,当方法执行过程中出现异常时,所有的数据库操作都会被回滚到之前的状态。
使用@transactional注解时,需要在Spring配置文件中配置事务管理器,例如:
```xml
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
```
在上面的配置中,我们使用org.springframework.jdbc.datasource.DataSourceTransactionManager作为事务管理器,并将其与DataSource数据源进行关联。
使用@transactional注解时,可以为注解指定多个属性,例如:
- propagation:事务的传播行为,默认为REQUIRED;
- isolation:事务的隔离级别,默认为DEFAULT;
- readOnly:是否只读事务,默认为false;
- timeout:事务的超时时间,默认为-1;
- rollbackFor:需要回滚的异常类型;
- noRollbackFor:不需要回滚的异常类型。
示例:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.DEFAULT, readOnly=false, timeout=36000, rollbackFor=Exception.class)
public void addUser(User user) {
userDao.addUser(user);
}
}
```
在上面的示例中,我们在addUser方法上使用了@Transactional注解,并指定了事务的传播行为、隔离级别、是否只读、超时时间以及需要回滚的异常类型。当该方法执行过程中出现异常时,事务会回滚到之前的状态。
阅读全文
相关推荐


















