advice 다시 원복

This commit is contained in:
2026-01-19 16:24:53 +09:00
parent 1fc89d7bbe
commit 0ad1929364

View File

@@ -13,7 +13,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter; import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest; import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse; import org.springframework.http.server.ServerHttpResponse;
@@ -35,7 +34,8 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
private final AuditLogRepository auditLogRepository; private final AuditLogRepository auditLogRepository;
private final MenuService menuService; private final MenuService menuService;
@Autowired private ObjectMapper objectMapper; @Autowired
private ObjectMapper objectMapper;
public ApiResponseAdvice(AuditLogRepository auditLogRepository, MenuService menuService) { public ApiResponseAdvice(AuditLogRepository auditLogRepository, MenuService menuService) {
this.auditLogRepository = auditLogRepository; this.auditLogRepository = auditLogRepository;
@@ -44,20 +44,19 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
@Override @Override
public boolean supports( public boolean supports(
MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) { MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
// ApiResponseDto를 반환하는 경우에만 적용 // ApiResponseDto를 반환하는 경우에만 적용
return returnType.getParameterType().equals(ApiResponseDto.class) return returnType.getParameterType().equals(ApiResponseDto.class);
|| returnType.getParameterType().equals(ResponseEntity.class);
} }
@Override @Override
public Object beforeBodyWrite( public Object beforeBodyWrite(
Object body, Object body,
MethodParameter returnType, MethodParameter returnType,
MediaType selectedContentType, MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request, ServerHttpRequest request,
ServerHttpResponse response) { ServerHttpResponse response) {
HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest(); HttpServletRequest servletRequest = ((ServletServerHttpRequest) request).getServletRequest();
ContentCachingRequestWrapper contentWrapper = null; ContentCachingRequestWrapper contentWrapper = null;
@@ -72,7 +71,7 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
Long userid = null; Long userid = null;
if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth if (servletRequest.getUserPrincipal() instanceof UsernamePasswordAuthenticationToken auth
&& auth.getPrincipal() instanceof CustomUserDetails customUserDetails) { && auth.getPrincipal() instanceof CustomUserDetails customUserDetails) {
userid = customUserDetails.getMember().getId(); userid = customUserDetails.getMember().getId();
} }
@@ -93,29 +92,29 @@ public class ApiResponseAdvice implements ResponseBodyAdvice<Object> {
List<?> list = menuService.getFindAll(); List<?> list = menuService.getFindAll();
List<MenuDto.Basic> result = List<MenuDto.Basic> result =
list.stream() list.stream()
.map( .map(
item -> { item -> {
if (item instanceof LinkedHashMap<?, ?> map) { if (item instanceof LinkedHashMap<?, ?> map) {
return objectMapper.convertValue(map, MenuDto.Basic.class); return objectMapper.convertValue(map, MenuDto.Basic.class);
} else if (item instanceof MenuDto.Basic dto) { } else if (item instanceof MenuDto.Basic dto) {
return dto; return dto;
} else { } else {
throw new IllegalStateException("Unsupported cache type: " + item.getClass()); throw new IllegalStateException("Unsupported cache type: " + item.getClass());
} }
}) })
.toList(); .toList();
AuditLogEntity log = AuditLogEntity log =
new AuditLogEntity( new AuditLogEntity(
userid, userid,
ApiLogFunction.getEventType(servletRequest), ApiLogFunction.getEventType(servletRequest),
ApiLogFunction.isSuccessFail(apiResponse), ApiLogFunction.isSuccessFail(apiResponse),
ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()), ApiLogFunction.getUriMenuInfo(result, servletRequest.getRequestURI()),
ip, ip,
servletRequest.getRequestURI(), servletRequest.getRequestURI(),
ApiLogFunction.cutRequestBody(requestBody), ApiLogFunction.cutRequestBody(requestBody),
apiResponse.getErrorLogUid()); apiResponse.getErrorLogUid());
auditLogRepository.save(log); auditLogRepository.save(log);
} }