작성
·
732
0
선생님 안녕하세요! 꾸준히 걸어가고있는 코린입니다..
혹시
@Component
@Transactional
@RequiredArgsConstructor
static class InitService {
이 부분에서 static이 아닌 private으로 봐꿔보면 종속성 순환에러에 걸리는데 static일때는 메모리를 공유하고 private일때는 공유 하지않아서 생기는 문제인가요?
답변 2
4
안녕하세요. 김태현님, 공식 서포터즈 David입니다.
.
자바의 내부 클래스(inner class)는 static inner class가 아니라면 내부 클래스를 포함하고 있는 외부 클래스의 객체가 필요합니다.
InitDb를 생성하려는데 InitDb는 InitService를 멤버변수로 가지고 있으므로 InitService를 생성해서 주입해야 합니다. 그래서 InitService를 생성하려고 하는데 InitService가 내부 클래스라서 InitService를 포함하고 있는 외부 클래스(InitDb)의 객체를 생성하려고 합니다.
이 과정에서 순환이 생기게 됩니다.
static inner class는 자신을 감싸고 있는 외부 클래스의 객체를 필요로 하지 않습니다.
따라서 InitService를 static inner class로 선언하여 사용하는 것입니다.
.
감사합니다.
1