[200618.79일차] Spring 9 - 어노테이션 이용 (@Autowired) & bean
info 안내문 띄우기
Locale locale;
logger.info("Controller 생성자 실행", this.locale);

해당 경로의 xml을 받아옴
DI (Dependency Injection) : 의존성 주입
@Autowired
=> 의존 객체 자동 주입(Automatic Dependency Injection)
=> 주입하려고 하는 객체의 타입이 일치하는지를 찾고 객체를 자동으로 주입함
=> 속성, 새터 그리고 생성자 모두와 연결 할 수 있음
@Autowired로 연결할 객체가 없으면 오류가 남
=> BeanCreationException 오류
org.springframework.beans.factory.BeanCreationException:
어노테이션을 붙여 객체를 생성=> Autowired로 주입
* 객체가 만들어지는 순서 때문에 오류가 날수도 있다.
test02에서 test02보다 늦게 만들어지는 test를 사용하면 Nullpoint오류가 난다.
Test02 객체가 만들어지기 전에 context로 test를 먼저 읽게 함
TestController, TestDAO, TestService, TestServiceImpl
서버 구동하면 빈으로 등록되니까 오토와이드로 주입하면 사용 가능 -> new 연산자 사용할 필요 X
@Autowired TestDAO => 오토와이드를 통해 dao 처리해서 사용
TestService 를 상속받은 객체가 두개 이상이 되면 에러가 발생한다.
=> ~ is defined: expected single matching bean but found 2: [ ~, ~ ]
해결 방법 1
=> 부모 객체를 사용하지 않고, 정확히 명시한다. (자식 객체가 둘 이상이라 오류가 난 경우에만 가능)
해결 방법 2
=> ApplicationContextAware를 상속받은 클래스를 만들어 사용
해결 방법 3
=> @Qualifier("객체이름")을 사용한다.