我写了一个简单的自定义注释来将HttpHeaders设置为ResponseEntity因为在每个地方都复制了代码。
注释接口和类。
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface JsonHeader {}
@Component
@Aspect
public class JsonHeaderAspect {
private final Log logger = LogFactory.getLog(getClass());
@Around(value = "@annotation(JsonHeader)")
public Object aroundServiceResponse(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
return proceedingJoinPoint.proceed(new Object[] {headers});
}
}
RestController 类
@RestController
@RequestMapping(path = "/login")
public class LoginRestController {
private final Log logger = LogFactory.getLog(getClass());
@Autowired
LoginServiceImpl loginService;
@JsonHeader
@RequestMapping(value = "/user",consumes = MediaType.APPLICATION_JSON_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<ResponseBean> postCheckUser(@RequestBody LoginBean loginBean) {
ResponseBean responseBean = loginService.checkUser(loginBean);
return new ResponseEntity<ResponseBean>(responseBean,headers, HttpStatus.OK);
}
}
现在我想将返回的 HttpHeaders 值注释到休息控制器类。
是否有人可以描述它发生的原因以及如何解决此问题,这将非常有帮助。提前致谢