Obter valor de retorno no costume anotação aop primavera

votos
0

Eu tenho escrever uma anotação personalizada simples para definir HttpHeaders para ResponseEntity por causa de duplicar o código em todos os lugares.

Interface de anotação e Classe.

@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 Classe

@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);
    }
}

Agora eu quero obter o valor HttpHeaders retorno annotaion a classe do controlador descanso.

É qualquer um pode descrever por que isso aconteça e como corrigir esse problema vai ser ótimo útil. desde já, obrigado

Publicado 20/09/2018 em 04:10
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Você pode fazer isso simplesmente modificando o seu conselho como esta. Você não precisa fazer nada no controlador.

@Around(value = "@annotation(requestMapping)")
public Object aroundServiceResponse(ProceedingJoinPoint proceedingJoinPoint,RequestMapping requestMapping) throws Throwable {

   String[] consumes = requestMapping.consumes();

        consumes[consumes.length] = MediaType.APPLICATION_JSON_VALUE;

    String[] produces = requestMapping.produces();

        produces[produces.length] = MediaType.APPLICATION_JSON_VALUE;


    return proceedingJoinPoint.proceed();
}
Respondeu 20/09/2018 em 07:59
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more