问题描述
我的signupUser方法保存用户并将电子邮件发送到注册的电子邮件地址。如果电子邮件发送失败,则必须回滚保存的用户数据。我在signupUser方法上添加了@Transactional
,但是当发生异常并且数据被永久保存时,它不会回滚。我暂时用简单的throw RunTimeException
代替了发送电子邮件的部分,以检查事务处理是否可行,但结果相同(没有回滚)。
此方法在带有注释的@Controller
类中调用。
我在做什么错了?
@Service
public class AuthService {
private UserRepository userRepository;
private final Logger logger = LoggerFactory.getLogger(AuthService.class);
private CustomMailSender mailSender;
private ModelMapper modelMapper;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
public AuthService(UserRepository userRepository,CustomMailSender mailSender,ModelMapper modelMapper) {
this.userRepository = userRepository;
this.mailSender= mailSender;
this.modelMapper = modelMapper;
}
@Transactional
public void signupUser(SignUpForm signUpForm){
userRepository.save(new User(signUpForm.getUsername(),passwordEncoder.encode(signUpForm.getPassword()),signUpForm.getEmail()));
throw new RuntimeException("腹たつ");
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)