티스토리 뷰

Spring/Spring IoC

@Autowired 를 알아보자

세진짱 2020. 5. 16. 02:45

@Autowired


@Autowired란?

  • @Autowired는 의존성을 "타입"을 통해 찾아 주입해주는 역할을 해준다

  • 그래서 사용하면 굉장히 편리해진다!

  • 생성자(스프링 4.3부터 생략 가능), 세터, 필드 에서 사용할 수 있다!

  • 위와 같이 써주면 자동으로 bean을 찾아서 주입해준다!

  • 이 때 bookRepository도 bean으로 등록되어 있지 않다면

  • 값이 안들어가는게 아니라 프로그램이 안돌아간다

  • 왜냐하면 @Autowired는 기본적으로 required 값이 true여서 해당 빈을 못 찾으면 실행이 안된다

  • 그래서 @Autowired(requried=false) 로 쓴다면 오류가 안난다! requred=true 인 것을 기억해두자!


같은 타입의 Bean이 여러개 일 때 @Autowired를 사용하면?

  • 만약 동일한 interface를 구현한 여러개의 클래스가 있고 해당 인터페이스에 @Autowired를 사용하면 어떻게 될까?

오류남 ㅎㅎ

  • bookRepository 를 구현한 Book1, Boo2 중 뭐를 고를지 몰라서 오류가 난다!

  • 이 때 해결방법이 있다

  • 첫째로 @Primary를 사용하면 된다!

@Primary 사용

  • 이렇게 @Primary를 붙이면 해당 bean을 주입하게 된다

  • 두번째 방법은 여러개의 bean을 리스트로 다 받는 방법이다!

List로 다 받아올수이씀!

  • 이렇게 List로 여러개를 받아올 수 있다!

  • 세번째 방법은 @Qualifier("bean id") 를 사용하는 방법이다

book1을 받아온다!

  • 이렇게 3가지의 방법으로 해결할 수 있다!


@Autowired 의 동작 원리

아직 동작원리 부분이 완벽하게 이해가지 못해서 제대로 정리를 못한것같다..!

하지만 @Autowired는 편하다

근데 스프링 부트 책을 읽다보니 @Autowired 보다도 생성자로 의존성을 주입하는걸 권장한다

일단 스프링4.3부터 생성자에서는 @Autowired가 생략 가능하고 롬복을 사용하면 코드가 더 간단하고 쉬워진다

나중에는 롬복 + 생성자를 통한 의존성주입에 대해 정리를 해봐야겠다!

'Spring > Spring IoC' 카테고리의 다른 글

Spring Profile에 대해 알아보자!  (0) 2020.05.18
Bean의 스코프에 대해 알아보자  (3) 2020.05.17
@ComponentScan에 대해 알아보자  (0) 2020.05.17
스프링 Bean 설정방법  (2) 2020.05.15
스프링 IoC 컨테이너와 빈  (1) 2020.05.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
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
글 보관함