setter(2)
-
순환 참조 문제(Setter 주입 vs 생성자 주입)
순환참조란 A 클래스가 B 클래스의 Bean을 주입받고, B클래스가 A 클래스의 Bean을 주입받는 상황처럼 서로 순환되어 참조되는 경우를 말한다. 특정 클래스에서 DI를 받을 수 있는 방법은 필드 주입, Setter 주입, 생성자 주입이 대표적으로 가능하다. 이번에는 지난번 Setter 주입과 생성자 주입에서 각각 순환참조 문제가 다르게 나타나는 것을 살펴본다. 준비한 예제에서는 DependencyA와 DependencyB가 서로 순환 참조를 하고 있는 상황이다. Setter 주입의 경우 class DependencyA { private DependencyB dependencyB; @Autowired void setDependencyA(DependencyB dependencyB) { this.depen..
2022.11.02 -
수정자 DI, 생성자 DI
스프링 DI 방법 2가지 Dependency Injection(의존관계 주입) 강한 결합 객체 내부에서 다른 객체를 생성하면 강한 결합도를 갖게된다. A 클래스 내부에서 B라는 객체를 직접 생성할 경우, B 객체를 C로 변경해야 한다면 A 클래스 내부의 코드를 직접 수정해야한다. 런타임 이전에 의존관계가 이미 형성된다. 느슨한 결합 객체를 주입받는다는 것은 외부에서 생성된 객체를 인터페이스를 통해 넘겨받는 것을 의미한다. 이는 결합도를 낮추고 런타임 시에 의존관계가 결정된다. 스프링에서는 의존관계 주입을 통해 객체 간 느슨한 결합을 유지할 수 있는데, 대표적으로 의존관계를 주입할 수 있는 Setter 주입과 생성자 주입에 대해 알아보자. 1. Setter 주입 IDE의 자동생성 기능으로 setter 메소..
2022.11.02