Intro
spring bootμμ serviceλ₯Ό μ£Όμ νμ¬ μ¬μ©νλ λμ€ λ€μμ μ€λ₯κ° λ°μνμμ΅λλ€.
The dependencies of some of the beans in the application context form a cycle
μΈν 리μ μ΄ ν°λ―Έλμ μν μ°Έμ‘°λκ³ μλ€λ νμμ ν¨κ» μ μ¬λΌκ°λ μλ²κ° λμνμ§ μμλκ΅°μ..
Why?
μ²μ 보λ μ€λ₯λΌμ μ΄κ² λκΉ μΆμμ΅λλ€. ꡬκΈλ§μ ν΄λ³΄λ λ νμΌμμ μλ‘ λμΌνκ² μμ±μλ₯Ό μ£Όμ ν΄ μ¬μ©ν΄μ μν μ°Έμ‘°κ° μΌμ΄λκ³ , λλ¬Έμ μλ¬κ° λ°μνλ κ²μ΄μμ΅λλ€.
How to solve the problem
ꡬκΈλ§ν κ²°κ³Ό, μν μ°Έμ‘° μ€λ₯λ₯Ό ν΄κ²°ν λ°©λ²μ ν¬κ² 3κ°μ§κ° μμμ΅λλ€.
#1 application.yml λ³κ²½
spring:
application:
name: user-service
main:
allow-circular-references: true
spring.main.allow-circular-referenceλ₯Ό trueλ‘ μ€μ ν κ²½μ°, μ λμνλ€κ³ ν©λλ€. νμ§λ§ μ΄ λ°©λ²μ μ κ² λμνμ§ μμμ΅λλ€. μ€νλ§ 3.0 λ²μ μμλ λμμ μνλ κ±΄κ° μΆλ€μ.
#2 Lazy μ΄λ Έν μ΄μ νμ©
@Lazy
κ·Έλμ μ λ λλ²μ§Έ λ°©λ²μΈ Lazy μ΄λ Έν μ΄μ μ νμ©νμ΅λλ€. μ΄ μ΄λ Έν μ΄μ μ λΉ μ΄κΈ°ν μμ μλ νλ‘μ μ£Όμ ν, μ²μ μ€νλ λ μ€μ κ°μ²΄λ₯Ό μ£Όμ νλ€κ³ ν©λλ€.
#3 μν μ°Έμ‘°κ° μΌμ΄λμ§ μλλ‘ κ΅¬μ‘° λ³κ²½
μμ μν μ°Έμ‘°κ° μΌμ΄λμ§ μλλ‘ κ΅¬μ‘°λ₯Ό λ³κ²½νλ λ°©λ²λ μμ΅λλ€.
Conclusion
μν©μ λ§κ² μ μ ν λ°©λ²μ μ¬μ©νμ¬ ν΄λΉ μ€λ₯λ₯Ό ν΄κ²°νμκΈΈ λ°λλλ€. μ°Έκ³ λ‘ κ°μ₯ μ’μ λ°©λ²μ μν μ°Έμ‘°κ° μΌμ΄λμ§ μλλ‘ κ΅¬μ‘°λ₯Ό λ³κ²½νλ κ²μ΄λΌκ³ νλ€μ!