스프링에서 빈 순환참조가 일어날 때 회피하는 방법을 알아보자.
Redesign
사실상 재설계하는 것이 가장 바람직한 방법이다.
하지만 실제 운용할 때에는 재설계할 수 없는 상황이 허다할 것이다. (레거시와 많이 엮여있거나, 이미 테스트가 끝난 경우)
Use @Lazy
가장 심플한 방법으로 주입하는 곳에 @Lazy 키워드를 붙이는 것으로 해결할 수 있다.
완전히 빈을 초기화하는 것 대신에 프록시가 대신 주입되는 방법이다.
실제로 해당 빈이 사용될 때 빈이 주입되는 방식이다.
Use Setter/Field Injection
가장 많이 사용되는 순환참조 회피 방법으로 Constructor 주입 방법 대신 Setter, Field 주입 방법을 사용하는 것이다.
Use @PostConstructor
빈 주입을 @Autowired 대신 @PostConstructor 어노테이션을 사용하여 빈 주입 순서를 명확히 정해주는 방법이다.
'Programming > Java & JSP & Spring' 카테고리의 다른 글
JVM Memory와 Garbage Collection (0) | 2020.01.18 |
---|---|
JPQL과 영속성 컨텍스트 (0) | 2019.12.21 |
Gradle & Build 그리고 IntelliJ의 Build (0) | 2019.12.07 |
[Spring] @ModelAttribute vs @RequestParam (0) | 2019.12.07 |
Spring Event에 대해서 알아보자 (0) | 2019.12.07 |