본문 바로가기
Spring

[Spring] 의존성 주입

by sgyeong 2024. 11. 15.

생성자 주입 

의존해야 하는 객체를 private final로 선언하고 생성자를 통해 객체를 주입받는 방식

 

필드 주입

변수에 @Autowired를 붙여서 사용하는 방식

 

수정자 주입

setter를 생성해서 의존 관계를 주입받는 방식

 

 

 

생성자 주입 장점 1) final 선언 가능 
필드 주입과 수정자 주입은 final로 선언이 불가능하다. 하지만 생성자 주입은 final로 필드 선언이 가능하기 때문에 불변성이 보장된다.

2) 순환 참조 방지
필드 주입과 수정자 주입은 bean을 먼저 생성한 뒤, 주입하려는 bean을 찾아 주입한다. 그러나 생성자 주입은 먼저 bean을 생성하지 않고 주입하려는 bean을 먼저 찾는다. 따라서 생성자 주입을 하면 서버 자체가 구동이 되지 않아 순환 참조를 방지할 수 있다.

3) 테스트의 용이함
단순히 원하는 객체를 생성하고 생성자에 넣어주면 되기 때문에 테스트에 용이하다.
   

 

필드 주입 장점 어노테이션을 사용하여 간편하게 코드를 작성할 수 있다.
단점 1) 순환참조가 발생할 가능성이 있다.

2) 어떤 의존성이 주입되는지 파악하기 어렵다.

3) final을 선언할 수 없기 때문에 객체가 변할 수있다. 

 

 

수정자 주입 선택적인 의존성을 사용할 때 유용하다. 상황에 따라 의존성 주입이 가능하다.