reflection API 를 이용하여 매개변수로 넘어온 클래스의 종류 및 메소드 목록을 출력하는 메소드를 작성하시오.

public void printClass(Object object) {
	System.out.println(object.class.getName());
	System.out.println(object.class.getMethods());
}

XML 파서인 SAX 와 DOM 파서의 특징 및 장단점을 서술하시오.

SAXDOM
순차적 처리한번에 다 읽어온다
메모리 부담이 더적음-
-노드를 추가,수정,삭제 하기 쉬운 구조
손이 많이감-
크기가 커질수록 상대적으로 속도가 빠름-

JMX 에 대하여 서술하시오.

  • 모니터링 API
  • Java Management Extensions 의 약자로 자바 기반의 모든 애플리케이션을 모니터링 하며 JDK 5.0 부터 지원

JMX는 4단계 레벨로 이루어진다

  • instrumentation level
  • agent level
  • distributed servide level
  • addtional management protocol APIs

JMX를 모니터링할 수 있는 도구를 3개 이상 나열하고 링크도 포함시키시오.

Web access log 의 패턴을 확인해 보고, 각 패턴에 대하여 서술하시오.

https://httpd.apache.org/docs/2.4/logs.html 를 참고하면 자세히 나온다

예시

127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326

포맷

LogFormat "%h %l %u %t \"%r\" %>s %b" common
CustomLog logs/access_log common
  • 127.0.0.1 (%h)
    • 서버에 요청을 한 클라이언트(원격 호스트)의 IP 주소
  • -(%l)
    • 출력에서 “빼기기호”는 요청한 정보가 없음을 나타냄
  • frank (%u)
    • 이는 HTTP 인증으로 알아낸 문서를 요청한 사용자의 userid
  • [10/Oct/2000:13:55:36 -0700] (%t)
    • 서버가 요청처리를 마친 시간
  • “GET /apache_pb.gif HTTP/1.0” ("%r")
    • 클라이언트의 요청줄
  • 200 (%>s)
    • 이는 서버가 클라이언트에게 보내는 상태코드
  • 2326 (%b)
    • 마지막 항목은 응답 헤더를 제외하고 클라이언트에게 보내는 내용의 크기를 나타냄

자바 GC 종류를 모두 나열 하시오.

GC - Garbage Collection 의 약자이다.

  • 기본적으로 메모리할당
  • 사용중인 메모리 인식
  • 사용하지 않는 메모리 인식

역할을 담당한다.

GC의 종류는 크게 두가지 타입으로 나뉘며 마이너GC, 메이저GC라고한다

  • 마이너GC = Young 영역에서 발생하는 GC
  • 메이저GC = Old 영역이나 Perm 영역에서 발생하는 GC

GC 상황을 모니터링할 수 있는 도구를 3개 이상 나열하고, 링크도 포함시키시오.

다음과 같이 resultCode, resultMessage, siteId JSON 스트링이 있고, 해당 JSON 스트링 값을 ConstraintData DTO 클래스의 프로퍼티에 bind 시키기 위해 다음과 같은 코드를 사용했다.

String body = {\"resultCode\":1000,\"resultMessage\":\"test\",\"siteId\":1111}


@Data

public class ConstraintData {

private int siteId;

}


ObjectMapper mapper = new ObjectMapper();

ConstraintData data = mapper.readValue(body, ConstraintData.class);


허나, 이와 같이 코드를 작성하게 된다면 다음과 같은 예외를 접하게 될 것이다.

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "resultCode" (Class com.test.dto.base.ConstraintData), not marked as ignorable


이유는 JSON 스트링에는 resultCode, resultMessage name이 존재하지만 ConstraintData 클래스에는 해당 멤버 변수가 존재하지 않기 때문이다.

예외 내용을 살펴보면 "알려지지 않은 resultCode" 라고 표시된다.


전달해 주는 JSON 스트링 값을 모두 다 받아서 처리해야 한다는 규칙이 없다면 내가 필요한 값만 ConstraintData 클래스에 정의하여 바인드 시키면 될 것이다.

그러기 위해선 다음과 같이 두 가지 방법을 사용하면 된다. 


첫 번째는 ObjectMapper 클래스를 초기화 한 후 다음의 설정을 추가

mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);


두 번째는 ConstraintData 클래스에 다음의 annotation을 추가

@JsonIgnoreProperties(ignoreUnknown = true)





출처 : 탁구치는 개발자 - http://lng1982.tistory.com/180   


spring-boot 관련글은 아래 url을 참고하세요
https://hyeonguj.github.io/2020/01/15/Spring-주기적으로-코드-실행하기-Schedule/

블로그 자료를 이전하고 있습니다.
https://hyeonguj.github.io/


+ Recent posts