Springcloud_ad-ad-common统一响应
统一响应实体
package com.imooc.ad.vo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* Created by Qinyi.
*/
@Data//实现get,set
@NoArgsConstructor//无参构造函数
@AllArgsConstructor//全餐构造函数
public class CommonResponse<T> implements Serializable {
private Integer code;
private String message;
private T data;
public CommonResponse(Integer code, String message) {
this.code = code;
this.message = message;
}
}
自定义注解:标记指定响应不需要统一拦截
package com.imooc.ad.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Created by Qinyi.
*/
@Target({ElementType.TYPE, ElementType.METHOD})//可以标识在类和方法上
@Retention(RetentionPolicy.RUNTIME)//运行时
public @interface IgnoreResponseAdvice {
}
package com.imooc.ad.advice;
import com.imooc.ad.annotation.IgnoreResponseAdvice;
import com.imooc.ad.vo.CommonResponse;
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.lang.Nullable;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
/**
* Created by Qinyi.
*/
@RestControllerAdvice//对响应实现统一拦截
public class CommonResponseDataAdvice implements ResponseBodyAdvice<Object> {
@Override
@SuppressWarnings("all")
public boolean supports(MethodParameter methodParameter,
Class<? extends HttpMessageConverter<?>> aClass) {//响应是否拦截
//类对@IgnoreResponseAdvice注解标识,不被CommonResponseDataAdvic影响
if (methodParameter.getDeclaringClass().isAnnotationPresent(
IgnoreResponseAdvice.class
)) {
return false;
}
//方法对@IgnoreResponseAdvice注解标识,不被CommonResponseDataAdvic影响
if (methodParameter.getMethod().isAnnotationPresent(
IgnoreResponseAdvice.class
)) {
return false;
}
return true;
}
@Nullable
@Override
@SuppressWarnings("all")
public Object beforeBodyWrite(@Nullable Object o,
MethodParameter methodParameter,
MediaType mediaType,
Class<? extends HttpMessageConverter<?>> aClass,
ServerHttpRequest serverHttpRequest,
ServerHttpResponse serverHttpResponse) {//该方法目的时拦截CommonResponse响应
CommonResponse<Object> response = new CommonResponse<>(0, "");
if (null == o) {//o只响应对象
return response;
} else if (o instanceof CommonResponse) {
response = (CommonResponse<Object>) o;
} else {
response.setData(o);
}
return response;
}
}
- Springcloud_ad-ad-common统一异常
- Springcloud_ad-ad-common通用配置:http消息转换器响应数据等(如响应json数据)
- (Spring Cloud微服务实战-书中之坑)spring cloud zuul统一处理业务异常,并且需要响应状态为200
- spring boot / cloud (二) 规范响应格式以及统一异常处理
- spring boot - cloud (二) 规范响应格式以及统一异常处理
- .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
- Spring Cloud Config - 统一配置中心
- .NET Core微服务之基于Steeltoe使用Spring Cloud Config统一管理配置
- spring boot / cloud (十二) 异常统一处理进阶
- SpringCloud SpringBoot mybatis 分布式微服务(六)Spring Boot中Web应用的统一异常处理
- spring cloud config 统一配置管理
- (六)整合spring cloud云服务架构 - 企业云架构common-service代码结构分析
- spring cloud config 统一配置中心 读取Git/SVN/本地文件配置及动态刷新
- Spring Cloud云服务 - 企业云架构common-service代码结构分析
- spring cloud :统一管理配置文件config
- spring cloud云服务架构 - HongHu commonservice-eureka 项目
- spring boot - cloud (二) 规范响应格式以及统一异常处理
- 使用的Spring Cloud 构建的统一配置中心
- Spring Cloud之统一fallback接口
- spring基础:快速入门spring cloud(6):统一配置管理之spring cloud config