Here is my controller class for GetMapping and PostMapping
public class Controller{ @CrossOrigin(origins = "*") @PostMapping(value = "/tran", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String,Object>> createTransaction(@RequestHeader(required = false,name="request-id") String requestId, @RequestHeader(required = false,name="request-datetime") String requestDate, @RequestHeader(required = false,name= "request-channel") String requestChannel, @RequestBody TransactionRequestEntity createTransactionRequest, HttpServletRequest req) throws Exception { ///// Some Code ///// } @CrossOrigin(origins = "*") @GetMapping(value = "/getTran", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<Map<String,Object>> getByTransactionId(@RequestHeader(required = false,name="request-id") String requestId, @RequestHeader(required = false,name="request-datetime") String requestDate, @RequestHeader(required = false,name= "request-channel") String requestChannel, @RequestParam(name="transactionId") String transactionId, @RequestParam(name="transactionSource") TransactionSourceEnum transactionSource, HttpServletRequest req) throws Exception { ///// Some Code ///// } } Here is the LoggingAspect class for above PostMapping and GetMapping
public class LoggingAspect { private static final ch.qos.logback.classic.Logger LOGGER = LoggingUtils.getLogger(LoggingAspect.class.getName()); @Around("@annotation(org.springframework.web.bind.annotation.PostMapping) && args(.., @RequestHeader header1,@RequestHeader header2,@RequestHeader header3, @RequestBody body, request)") public Object logPostMethod(ProceedingJoinPoint joinPoint, String header1,String header2,String header3, Object body, HttpServletRequest request) throws Throwable { LOGGER.info("Start {} {} : Request Id : {} : Request DateTime: {}: Request Channel : {} ", request.getMethod(), request.getRequestURI(), header1,header2,header3); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(body); LOGGER.debug("{} {} : Request Body : {}", request.getMethod(), request.getRequestURI(), jsonString); Object result; result = joinPoint.proceed(); LOGGER.debug("End {} {} : Response: {}", request.getMethod(), request.getRequestURI(), result); String response = mapper.writeValueAsString(result); JSONParser parser = new JSONParser(); JSONObject responseHeader = (JSONObject) ((JSONObject) ((JSONObject) parser.parse(response)).get("body")).get("responseHeader"); LOGGER.info("End {} {} : Response Header : {}", request.getMethod(), request.getRequestURI(), responseHeader); return result; } @Around("@annotation(org.springframework.web.bind.annotation.GetMapping) && args(.., @RequestHeader header1,@RequestHeader header2,@RequestHeader header3, @RequestParam param1,@RequestParam param2 , request)") public Object logGetMethod(ProceedingJoinPoint joinPoint, String header1, String header2, String header3 ,String param1, TransactionSourceEnum param2 , HttpServletRequest request) throws Throwable { LOGGER.info("Start {} {} : Request Id : {} :Request DateTime : {} :Request Channel : {} : Request Transaction Id : {} : Transaction Source : {} ", request.getMethod(), request.getRequestURI(), header1,header2,header3,param1,param2); ObjectMapper mapper = new ObjectMapper(); Object result; result = joinPoint.proceed(); LOGGER.debug("End {} {} : Response: {}", request.getMethod(), request.getRequestURI(), result); String response = mapper.writeValueAsString(result); JSONParser parser = new JSONParser(); JSONObject responseHeader = (JSONObject) ((JSONObject) ((JSONObject) parser.parse(response)).get("body")).get("responseHeader"); LOGGER.info("End {} {} : Response Header : {}", request.getMethod(), request.getRequestURI(), responseHeader); return result; } } The code run without any issue....But there are duplicate line. I want to remove that's duplicates. So how to write common method for above GetMapping and PostMapping.