小编Arn*_*pps的帖子

如何仅在 spring-transactions 交易成功时才发送电子邮件

我想在数据库中创建一个用户,并使用 AWS SES 向此案例的用户发送电子邮件。

  1. 如果用户在数据库中提交事务成功=>发送电子邮件
  2. 如果发送电子邮件 AWS SES 失败(检查异常)=> 回滚数据库中的用户创建
  3. 如果用户在数据库中提交事务失败 => 不要使用 AWS 向用户发送电子邮件

我的代码存在问题:如果我的sendEmail方法抛出异常,则会提交事务。

配置:带有 spring-data-jpa 的 Spring-Boot 项目

class EmailServiceImpl {   

    @Transactional(rollbackFor = Exception.class)
    @Override
    public User createUserAndSendEmail(UserDto userDto) throws UserEmailException {
        try {
            //rollback userCreation if sendEmail throw a checkedException
            User user = userService.create(userDto);
            sendEmail(user);
            return user;

        } catch (Exception exception) {
            throw new UserEmailException(exception.getMessage());
        }
    }

    //don't send email if userCommit in database failed
    private void sendEmail(User user) {
        amazonEmailService.sendMail(user);
    }
}

class …
Run Code Online (Sandbox Code Playgroud)

java spring spring-transactions spring-data-jpa

6
推荐指数
1
解决办法
3031
查看次数

在react js中渲染动态html

我想在 React js 中渲染 API 提供的动态 html 文本,但我不知道该怎么做。

例如 :

   dynamicHtml= <div> hello <span color=red> StackOverFlow </span> </div>

   render() {

        return (
            <div>  {dynamicHtml} </div>
        );
   }
Run Code Online (Sandbox Code Playgroud)

我只想在 StackOverFlow 上以红色显示 Hello StackOverFlow

html javascript reactjs

1
推荐指数
1
解决办法
9319
查看次数