의존성 주입 어노테이션
어노테이션 |
설명 |
@Autowired |
주로 변수 위에 설정하여 해당 타입의 객체를 찾아서 자동으로 할당한다. |
@Qualifier |
특정 객체의 이름을 이용하여 의존성 주입할 때 사용한다. |
@Inject |
@Autowired와 동일한 기능을 제공한다. |
@Resource |
@Autowired와 @Qualifier의 기능을 결합한 어노테이션이다. |
@Autowired
-생성자나 메소드, 멤버변수 위에 모두 사용가능
-어디에 사용하든 결과는 같지만 대부분은 멤버변수 위에 선언하여 사용
@Autowired
private Speaker speaker;
-스프링 컨테이너는 멤버변수 위에 붙은 @Autowired를 확인하는 순간 해당 변수의 타입을 체크, 그 타입의 객체가 메모리에 존재하는지 확인한 후 객체를 변수에 주입
->만약 @Autowired가 붙은 객체가 메모리에 없다면!?
NoSuchBeanDefinitionException을 발생시킨다. 따라서 반드시 해당 객체가 메모리에 생성되도록 해야한다.
@Qualifier
-의존성 주입 대상이 되는 타입의 객체가 두 개 이상일 때 오류 발생! => 컨테이너는 어떤 객체를 할당해야 할지 스스로 판단할 수 없어서 에러가 발생한다.
-따라서 이런 문제를 해결하고자 할 때 @Autowired 아래에 사용한다.
-@Qualifier 어노테이션을 이용하면 의존성 주입될 객체의 아이디나 이름을 지정할 수 있다.
@Autowired
@Qualifier("apple") ->apple타입의 스피커 객체를 생성하라.
private Speaker speaker;
@Resource
-객체의 이름을 이용하여 의존성 주입을 처리한다.
-name속성을 사용할 수 있어서 스프링 컨테이너가 해당 이름으로 생성된 객체를 검색하여 의존성 주입을 처리한다.
@Resource(name="apple")
private Speaker speaker;
추가어노테이션
Controller: 사용자의 요청 제어
ServiceImpl: 실질적인 비지니스 로직 처리
DAO: 데이터베이스 연동
-@Component만으로 클래스객체를 생성할 경우 어떤 클래스가 어떤 역할을 수행하는지 파악하기 어려움.
-이러한 클래스 분류를 위해서 @Component를 상속한 어노테이션을 추가로 제공
@Service |
비지니스 로직을 처리하는 Service클래스 |
@Repository |
데이터베이스 연동을 처리하는 DAO 클래스 |
@Controller |
사용자 요청을 제어하는 Controller 클래스 |
-@Controller : 해당 객체를 MVC 아키텍처에서 컨트롤러 객체로 인식하도록 함
-@Repository : DB연동 과정에서 발생하는 예외를 변환해주는 특별한 기능 추가
아 1일차 진짜 매우 많다. 죽을뻔했네
'건승하고있어요 > Spring framework' 카테고리의 다른 글
[Spring] 스프링2일차 - AOP용어 (0) | 2018.02.10 |
---|---|
[Spring] 스프링2일차 - 스프링AOP (2) | 2018.02.09 |
[Spring] 스프링1일차 - 어노테이션 기반 설정 (0) | 2018.02.09 |
[Spring] 스프링1일차 - 컬렉션(Collection) 객체 설정 (0) | 2018.02.08 |
[Spring] 스프링1일차 - 의존성관리/Setter인젝션(Setter Injection) (0) | 2018.02.08 |