很多时候程序出现的异常并不是,我们在enum里定义好的那些,大部分是程序运行时的异常,为了返回值的统一性,我们需要对那些突然出现异常进行操作
java
package com.lhw.management.config;
import com.lhw.common.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* 描述:拦截Controller方法的返回值,统一处理返回值/响应体
* @author lihaowei
*/
@RestControllerAdvice(basePackages = {"com.ewell.medai.connotation.qc.management.controller"})
public class ResultAdvice implements ResponseBodyAdvice<Object> {
@Autowired
private ObjectMapper objectMapper;
@Override
public boolean supports(MethodParameter methodParameter,
Class<? extends HttpMessageConverter<?>> aClass) {
return true;
}
@SneakyThrows
@Override
public Object beforeBodyWrite(Object o, MethodParameter methodParameter, MediaType mediaType,
Class<? extends HttpMessageConverter<?>> aClass, ServerHttpRequest serverHttpRequest,
ServerHttpResponse serverHttpResponse) {
if(o instanceof String){
return objectMapper.writeValueAsString(Result.success(o));
}
if(o instanceof Result){
return o;
}
return Result.success(o);
}
}
用一个类出现同一个类报cannot be cast to,不能强制转换,服务器错误500
javajava.xxxx.xxxx cannot be cast to java.xxxx.xxxx
可能是SpringBoot热部署的问题,导致虽然是同一个类但是由于是不同的类加载器加载导致,他们是不同的从而转换异常
pom文件中注释掉热部署的依赖
xml<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-devtools</artifactId>-->
<!-- <optional>true</optional>-->
<!-- </dependency>-->
放置常用的一些响应信息
javapublic enum ResultCodeEnum {
ERROR(100, "系统错误"),
SUCCESS(200, "操作成功"),
FAILED(500, "操作失败");
VALIDATE_FAILED(404, "参数检验失败"),
UNAUTHORIZED(401, "暂未登录或token已经过期"),
FORBIDDEN(403, "没有相关权限");
// 自定义状态码
private final int code;
// 自定义描述
private final String msg;
ReturnCode(int code, String msg){
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
maven下载配置成国内镜像提高下载速度
文件路径:D:\maven\apache-maven-3.6.0\conf\settings.xml
xml<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
-->
<localRepository>D:\maven\repository</localRepository>
提示身份证明检索失败
如果不存在,则直接添加SQLNET.AUTHENTICATION_SERVICES= (NONE)