반응형
1. XML로 설정
XML을 매번 바꿔야되므로 귀찮으니 발전해서 소스코드를 읽게해줌.
<설정을 분리하는 방식> -> <설정을 코드 내에서 인식>
따라서 java코드에서 @Component를 인식해서 객체화함
@Autowired를 통해서 Xml에 있던객체를, 코드에다가 객체를 모두 박아버리는것이다.
위 한줄만 추가해주면 된다.
=> 객체를 만들어놓고 "그 안을 들여다봐라" 라는 뜻
=> 그래야 @Autowired를 통해서 안을들여다보고 자동으로 설정
(추가해주지 않으면 탐색을 하지 않으므로 NullPointerError 뜬다.)
@Autowired : 자동으로 연결해준다는것은 문제가 될 수 있다.
@Qualifer : 객체가 여러개일때 식별이 모호할경우 명시해주기 위해 사용한다.
bean에 모호한 exam이 여러개 등록되어있다.
id="exam"으로 하면 @Autowired되지만
id="exam1", id="exam2"로 설정해두면 어떤 객체를 선택해야될지몰라 오류가 난다.
따라서, @Qualifer를 통해서 정확한 id를 주어 객체를 Autowired할 수 있게 도와준다.
이때 사용하는것이 @Qualifier다.
@Autowired 위치
그러면 바인딩이 되지않는다..!!
없다면, 기본 생성자를 알아서 만들어줌!!
추가적으로, @Qualifier를 직접 생성자에 넣어주는 방법도 보겠다.
하나만 넣어줘도 된다.
Autowired를 했는데, 원하는 객체가 없을때?
아래와 같은 상황처럼 exam 객체가 null인경우는 다른 출력문을 출력해주려고한다.
어떻게 하면 @Autowired에서 null을 반환받을까?
Autowired에서 괄호를 열면 설정값을 지정할 수 있다.
@Autowired(required = false)로 설정해주면 된다.
반응형
'웹(Web) > 백엔드(Backend)' 카테고리의 다른 글
스프링 XML --> JAVA Configuration으로 변경 (0) | 2021.04.19 |
---|---|
스프링 어노테이션을 이용한 객체생성/초기값(@Value) (0) | 2021.04.19 |
스프링 IoC 컨테이너 사용(ApplicationContext 사용) (0) | 2021.04.05 |
IoC컨테이너(Inversion of Control)란 (0) | 2021.04.04 |
의존성주입(DI, Dependency Injection)이란 (0) | 2021.04.04 |