공부하는 블로그

의존성 주입설정 (Spring) 본문

Develop/Spring

의존성 주입설정 (Spring)

모아&모지리 2018. 3. 6. 13:19

스프링에서 의존성 주입을 지원하는 어노테이션으로는 @Autowired, @Inject, @Qualifier, @Resource가 있다.


@Autowired : 주로 변수 위에 설정하여 해당 타입의 객체를 찾아서 자동으로 할당한다.

org.springframework.beans.factory.annotation.Autowired


@Autowired은 생성자나 메소드, 멤버변수 위에 모두 사용할 수 있다. 어디에 사용하든 결과가 같아서 상관없지만, 대부분은 멤버변수 위에 선언하여 사용한다. 스프링 컨테이너는 변수 위에 붙은 @Autowired를 확인 하는 순간 해단 변수의 타입을 체크한다. 그리고 그 타입의 객체가 메모리에 존재하는지를 확인 한 후에, 그 객체를 변수에 주입한다.

그런데 만약 @Autowired가 붙은 객체가 메모리에 없다면 컨테이너가 NoSuchBeanDefinitionException을 발생시킨다. 해당 메시지는 @Autowired 대상 객체가 메모리에 존재하지 않는다는 의미이다.


@Resource는 객체의 이름을 이용하여 의존성 주입을 처리한다. @Resource는 name속성을 사용할 수있어서, 스프링컨테이너가 해당이름으로 생성된 객체를 검색하여 의존성주입을 처리한다. //@Inject어노테이션과 같은 기능을 수행한다.


@Qualifier는 의존성 주입 대상이 되는 타입의 객체가 두개 이상일때 발생할 때 문제가 발생하는데 @Qualifier어노테이션을 이용하면 의존성 주입될 객체의 아이디나 이름을 지정할 수있는데 , 이 때 객체의 이름 중 하나를 지정하면 간단하게 처리할 수있다.


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

사용자 인증 예제  (0) 2018.03.06
트랜젝션처리 와 Exception처리  (0) 2018.03.06
@어노테이션 정리  (0) 2018.03.06
Spring 이란?  (0) 2018.03.06
Spring MVC Controller(컨트롤러)가 무엇을 처리해 주는가?  (0) 2017.12.12