본문 바로가기
관리자

Programming-[Backend]/Spring

[TIL] ResponseEntity<?>, inner class File name too Long

728x90
반응형

 

ResponseEntity<?>: objectMapper 처리

 

상황

다른 API에 요청을 보내고 ResponseEntity<?>의 파라미터에 ResponseEntity<SomeType>으로 응답 객체의 타입을 구체화하여 받을려고 했다.

 

문제

SomeType과 일치하지 않는 응답이 오면 유연하게 대처가 안된다. 이를 위해 ? 타입이 존재한다. 이렇게 ? 타입으로 유연하게 받은 뒤에 objectMapper 등을 이용하여 json으로 변환하고 다시 읽어들이면 유연하게 응답을 받을 수 있다.

 

 

예시

ResponseEntity<?> response = imageUpload(file);
try {
  String jsonBody = objectMapper.writeValueAsString(response.getBody());
  SomeType imageUploadResponse = objectMapper.readValue(
      jsonBody, SomeType.class);
//SomeType으로 변환된 response 객체에서 정보를 꺼내와서 후속처리
} catch (JsonProcessingException e) {
  throw new RuntimeException(e);
  }

 

 


 

innerclass File name too long

상황

데이터 객체가 너무 계층화되어 복잡도가 높고 파일이 너무 많이 생성되어 계층간 의존도가 파악이 안되는 상황이였다. 예를 들어 아래와 같은 코드가 있고 복잡도가 높아지면 파일이 너무 많이 생성된다.

public class a {
  private B b;
}


//다른 파일
public class b {
  private C c;
}

//...

 

 

문제

이를 해결하려 아래와 같은 innerclass를 사용하려 했다.

public class a {
  private B b;
  
  public class b {
    private C c;
    
    // 추가 inner class 정의...
  }
}

 

그런데 a, b, c와 같이 이름이 짧은 것이 아니라 길어지기 시작하면 클래스들을 참조할 때 a.b.c 식으로 참조하다가 Runtime에 file name too long 에러가 난다.

 

 

해결책?

파일들을 여러 개 만드는 원안으로 선택하되, 패키지를 더 상세히 나누고 계층화하여 계층간 파악이 쉽도록 했다.

 

 

728x90
반응형