Closed zuminzi closed 1 year ago
Shop 리팩토링 작업 상세 내용 refactor : Global [x] 리팩토링 필요하거나 미사용 로직 임의로 주석 처리 Favorite과 Shop 도메인의 ShopTitle 코드 (https://github.com/4-frame-photos-map/backend/pull/59/commits/9e26af51da82c889e8dbc27223bc8d994df87b79) ResponseReviewDto shopInfo 코드 (https://github.com/4-frame-photos-map/backend/pull/59/commits/07d9fbb3ab4eb24eb35819fc1c7d27d5aa30642a) [x] Shop, Favorite 응답 구조 통일 성공 후 반환데이터 없을 시 빈 데이터 응답 [x] 공통 에러 응답(ErrorResponse.class) JsonNaming SnakeCase 반영 [x] @ RequestParam, @PathVariable을 Validation으로 유효성 검사 시 발생하는 Error Handler 추가 ConstraintViolationException 500(Server Error)에서 400(Client Error)로 [error field] msg로 에러메세지 구조화 (이전에는 Validation BindingResult 에러만)
Shop 리팩토링
[error field] msg
/brand
/marker
스프링 전체 설정 대신 필요한 클래스나 필드에 개별 설정 필요 상황
스프링 전체 설정 대신 필요한 클래스나 필드에 개별 설정 필요
com.fasterxml.jackson.core:jackson-databind:2.12
yml이나 ObjectMapper에도 설정 시도했으나 미작동
yml
ObjectMapper
setPropertyNamingStrategy()
# Not Working spring: jackson: property-naming-strategy: SNAKE_CASE
# Not Working spring: jackson: property-naming-strategy: SnakeCaseStrategy
# Not Working spring: jackson: property-naming-strategy: 'com.fasterxml.jackson.databind.PropertyNamingStrategies.SnakeCaseStrategy'
// Not Working // JacksonConfig.java
@Bean public ObjectMapper objectMapper() { return new ObjectMapper() .. .setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy()); }
목적
/brand
)과 전체 검색(기존/marker
) 로직 합치기refactor : JsonNaming Snake Case 스프링 설정에 추가Shop 도메인 카카오 통신 후 역직렬화에 문제 없는지 테스트다른 도메인 작동 여부 테스트참고 사항
Jackson Property Naming Strategy 스프링 전체 설정에 작동하지 않는 이슈
결론
com.fasterxml.jackson.core:jackson-databind:2.12
yml
이나ObjectMapper
에도 설정 시도했으나 미작동시도 방법 1. yml
setPropertyNamingStrategy()
로 이동setPropertyNamingStrategy()
가 PropertyNamingStrategies 클래스에 속한 메서드이므로 작동을 기대했지만 미작동시도 방법 2. ObjectMapper에 적용 시도
@Bean public ObjectMapper objectMapper() { return new ObjectMapper() .. .setPropertyNamingStrategy(new PropertyNamingStrategies.SnakeCaseStrategy()); }
PropertyNamingStrategy 관련 참고자료