티스토리 뷰
반응형
backoffice api 에서 data-dam-api 로 request param 으로 값을 넘기기 위해
request model을 파라미터로 만들어주는 공통 모듈 제작
public static String convertParameter(Object obj) throws IllegalAccessException {
StringBuffer parameter = new StringBuffer();
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
Object value = field.get(obj);
if (!ObjectUtils.isEmpty(value)) {
parameter.append(field.getName())
.append("=")
.append(value)
.append("&");
}
}
parameter.delete(parameter.length()-1, parameter.length());
log.debug(parameter.toString());
return parameter.toString();
}
Field Class
- getDeclaredFields 메소드
- Java Reflection 을 사용하면 특정 인스턴스의 멤버 변수, 메소드 등에 접근 가능
- 멤버 변수에 접근할 수 있는 방법으로 getFields 메소드를 사용하는데, 이는 public 멤버 변수에만 접근이 가능
- private 을 포함한 모든 멤버 변수에 접근하기 위해선 getDeclaredFields 메소드 사용
- setAccessible 메소드
- getDeclaredFields 메소드를 통해 멤버 변수 정보에는 접근이 가능하지만, 멤버 변수의 값에는 접근이 불가능
- private 멤버 변수 값을 read/write 하기 위해선 setAccessible 메소드를 통해 해당 필드 값에 접근을 허용해주는 설정 필요
- 해당 setting 없이 private 멤버 변수의 값에 접근하게 되면 IllegalAccessException 예외가 발생
(참고 : junhyunny.blogspot.com/2019/03/field-getdeclaredfields-setaccessible.html)
반응형
'Java' 카테고리의 다른 글
[Java] Collection - Iterator (0) | 2021.02.10 |
---|---|
[Java] 정규표현식 Pattern, Matcher (0) | 2021.02.10 |
[Java] URI 한글 인코딩 이슈 (0) | 2021.02.10 |
[Java] Redirecting HTTP to HTTPS in Spring Boot (0) | 2021.02.10 |
[Java] Model 2 Web Architecture (0) | 2021.02.10 |