至急的一个问题,关于spring3.12+ mybatis的事物控制

遇到一个很急的问题,我用的是声明式事务。
样式参照论坛的涛ge的代码,有这样一个需求,比如在下面的代码中,假如save方法中的
如果address 是 aaaa,那么要求事物强制回滚掉,这个地方该怎么解决啊

package cn.javass.spring.chapter9.service.impl;
//省略import
public class AnnotationUserServiceImpl implements IUserService {
...
    @Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED)
    @Override
    public void save(final UserModel user) {
        userDao.save(user);
        if ("aaaa".equals(user.getAddress())){
         // 事物要求回滚
            这个地方的代码怎么写?,如何将事物强制回滚掉?
         }
        addressService.save(user.getAddress());

    }
  
}

// 事物要求回滚
这个地方的代码怎么写?,如何将事物强制回滚掉?

throw new RuntimeException即可。 如果mysql保证不是myisam引擎

public void save(final UserModel user) {

    if (!"aaaa".equals(user.getAddress())){
         userDao.save(user);
         addressService.save(user.getAddress());
     }


} 

[code="java"]
@Transactional(propagation=Propagation.REQUIRED, isolation=Isolation.READ_COMMITTED,[b][i]rollbackFor = Exception.class[/i][/b])
@Override
public void save(final UserModel user) {
userDao.save(user);
if ("aaaa".equals(user.getAddress())){
[b][i]throw new Exception("XXXX");[/i][/b]
}
addressService.save(user.getAddress());

} 

[/code]

可以直接throw一个异常。。这样就rollback事务了。