티스토리 뷰

TIL

[Spring Boot] @Autowired: DI의 세 가지 방법

호호홍얍얍 2022. 5. 28. 17:14

1. 생성자 주입

- 생성자의 위에 @Autowired 를 사용하여 빈으로 등록된 객체를 주입하는 방식으로, 의존 관계가 실행 중에 변경되는 일이 없으므로 가장 추천되는 방식이다.

- 생성자가 하나만 있을 때는 @Autowired를 생략 가능하다.

- 아래의 경우에는 MemberRepository가 등록되어 있는지 찾아서 주입해주고, 없을 경우 컴파일 에러를 낸다.

@Autowired
public MemberService(MemberRepository memberRepository) {
    this.memberRepository = memberRepository;
}

 

2. Setter 주입

- 생성이 아닌 호출될 때 주입하는 방식이다.

- 언제든 변경할 수 있는 Setter이므로, final이 빠져야 하며, 이 때문에 누구에 의해서든 setter가 호출될 수 있으므로 위험하다.

 

3. 필드 주입

- 변수 앞에 선언하는 방식이다.

- 다만 순환참조가 발생할 수 있으므로 권장되지 않는 방식이다. (순환참조가 발생하면 실제 코드가 호출되기 전까지 문제를 발견할 수 없다. 생성자를 통해 주입하면 실행 시 오류가 발생한다.)

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함