在Spring-Boot在service层使用validation注解。

在Spring-Boot在service层使用validation注解。

今天写的业务有一个是写一个类似于utils的公共service,让各个业务员模块调用。
在service的入参bean校验上想用@Validated注解校验参数,即想controller层似的校验参数。

public DataResult sendMessage(@Validated MessageDTO bean) {
    DataResult result =  new DataResult();
    try {
        messageDao.sendMessage(bean);
        result.setSuccess(true);
        result.setMsg("消息发布成功");
    } catch (Exception e) {
        String trace = "消息发布失败:"+e.getMessage();
        log.error(trace,e);
        result.setSuccess(false);
        result.setMsg("消息发布失败");
    }
    return result;
}

但是这样子是不能实现的。
后台各种尝试,终于发现了一种方法
在service的class注解上添加@Validated,然后在接口入参上添加@Valid 注解可以完美实现校验参数。

/**
 * @author zhaoshuai
 * @description MessageService 消息推送公共service
 * @date 2020-06-02
 */
@Service
@Validated
@Slf4j
public class MessageService {

    @Autowired
    private MessageDao messageDao;
    /**
     * 消息发布
     * @param bean
     * @return
     */
    public DataResult sendMessage(@Valid MessageDTO bean) {
        DataResult result =  new DataResult();
        try {
            messageDao.sendMessage(bean);
            result.setSuccess(true);
            result.setMsg("消息发布成功");
        } catch (Exception e) {
            String trace = "消息发布失败:"+e.getMessage();
            log.error(trace,e);
            result.setSuccess(false);
            result.setMsg("消息发布失败");
        }
        return result;
    }
}

喜欢静静写代码的垃圾程序员,还在奋斗的路上。

你可能感兴趣的:(java,spring)