내부 클래스 질문
안녕하세요 선생님! 바쁘신데 이곳저곳 여러번 질문드려 죄송합니다. 강의를 복습하다가 정말 궁금한게 생겨서요..
Request Dto는 인자로 받아야돼서 테스트같은 곳에서 직접 생성해야하 되기 때문에 static으로 선언했고, Response Dto 같은 경우에는 그럴 필요가 없기 때문에 non-static으로 선언했다고 이해했습니다.
그런데 이런 경고가 뜨길래 찾아봤더니
이펙티브 자바에서 메모리 문제나 gc 문제 떄문에 바깥 인스턴스에 접근할 일이 없다면 무조건 static을 붙여서 정적멤버 클래스로 만들라고 되어있습니다.
실제 프로젝트나 실무에서는 reponse dto처럼 외부에서 직접 생성할 일이 없어도 static inner class로 선언해야 될까요?
정말 감사합니다.
답변 2
0
안녕하세요. 현집님
저도 이 부분에 크게 신경을 쓰지 않았는데, 말씀해주신 내용을 듣고, 찾아보니 말씀하신 것 처럼 예제에서는 바깥 인스턴스에 접근하지 않기 때문에 static으로 만드는 것이 참조 메모리 공간을 줄일 수 있네요.
gc 문제는 아마도 외부 클래스가 GC 대상이 되어야 할 때, 내부 클래스가 외부 클래스를 참고하고 있으니 GC 문제가 발생할 수 있다고 하는 것 같네요. 이 부분은 이 예제에서는 외부 클래스가 싱글톤으로 생성되니 크게 상관이 없을 것 같아요.
알려주셔서 감사합니다^^!
(저도 이런 경우에는 static으로 쭉 사용해야겠네요 ㅎㅎ)
강의 관련 외 질문입니다.
0
62
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
0
85
1
BeanCreationException
0
86
3
Update 후 UpdateMemberResponse 매핑할 때
0
46
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
96
2
페이징 + 검색조건 관련해서 질문드립니다.
0
70
1
Query Dsl Q파일 질문입니다.
0
81
1
루트 쿼리라는것은
0
58
1
메서드를 분리하는 기준
0
61
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
108
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
83
2
fetch join과 영속화와 OSIV의 관계
0
83
2
Distinct 사용 전 결과에 대한 의문
0
112
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
55
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
77
2
dto 필드 속 엔티티 여부
0
58
1
뷰템플릿 사용 시
0
76
2
Result 클래스 관련 질문
0
56
1
@PostConstruct 프록시 관련 질문드립니다
0
85
1
DTO 대신 Form 사용은 안되나요?
0
133
1
OSIV ON 상태일 때
0
94
1
fetch join VS fetch join 페이징 궁금증
0
178
2
양방향 연관관계 알아보는 법?
0
102
1
16강 17강 간단 정리 이게 맞을까요 ?
0
161
2





