본문 바로가기

Spring boot

Spring boot 생성자 주입 vs 필드 주입

반응형

생성자 주입 vs 필드 주입

 

위에 mSer는 final과 같이 선언되었고 밑에서 생성자로 의존성을 주입 해 주었다.

2번째 mForm는 그냥 @Autowired 어노테이션으로 필드 주입을 해 주었다. 하지만 final로 선언 할 수 가 없다

mSer 방식을 생성자 주입 이라고 하고 mForm을 필드 주입이라고 한다.

막상 구현 할 때는 차이를 몰랐는데 자세히 구글링 해보니 차이를 알게 되었다.

일단 기본적으로 스프링 팀에서는 생성자 주입을 추천한다고 한다.

 

난 근데 이런 경고 인텔리제이에서 못 봤는데...

 

생성자 주입 방식의 3가지 장점!!

1. 순환 참조 방지

필드 주입 방식이면, 순환 참조가 되어도 일단 서버가 구동이 된다. 하지만 생성자 주입 방식이면 아예 서버가 구동이 

안되서 사전에 순환 참조를 감지하고 방지할 수 있다. 이 차이는 필드 주입과 생성자 주입 방식이 빈을 주입하는 순서가 다르기 때문에 생긴다!!

 필드 주입은 먼저 빈을 생성한 후, 주입하려는 빈을 찾아 주입한다

생성자 주입은 먼저 생성자의 인자에 사용되는 빈을 찾거나 빈 팩토리에서 만든다. 그 후에 찾은 인자 빈으로 주입하려는 

빈의 생성자를 호출한다

즉, 먼저 빈을 생성하지 않고 주입하려는 빈을 먼저 찾습니다.

 

2. final로 선언 가능

런타임에 객체 불변성 보장!!

3.테스트 코드 작성 용이

 

자세한 사항은 아래 출처에서 확인~~

 

출처 : https://jackjeong.tistory.com/entry/Spring-%EC%83%9D%EC%84%B1%EC%9E%90-%EC%A3%BC%EC%9E%85-vs-%ED%95%84%EB%93%9C-%EC%A3%BC%EC%9E%85-Autowired

 

[Spring] 생성자 주입 vs 필드 주입 (@Autowired)

안녕하세요~ 잭코딩입니다! 이번에는 스프링 프레임워크에서 의존성을 주입하는 방법을 살펴보고 어떤 방식으로 주입하는 게 좋은지 살펴볼까요? 우선 결론부터 말하자면 생성자 주입 (Constructo

jackjeong.tistory.com

 

반응형

'Spring boot' 카테고리의 다른 글

Spring boot 끄적끄적(3)  (0) 2024.07.16
NoSQL vs SQL  (0) 2024.07.16
Spring boot 끄적 끄적(2)  (1) 2024.07.09
왜 HTTP Status Code를 사용해야하는가??  (0) 2024.07.08
Spring boot 끄적 끄적(1)  (0) 2024.06.25