본문 바로가기

Java/자바 기반 웹 개발자 과정 필기

[200618.79일차] Spring 9 - 어노테이션 이용 (@Autowired) & bean

반응형

 

 

더보기

info 안내문 띄우기

Locale locale;
logger.info("Controller 생성자 실행", this.locale);

 

 

해당 경로의 어노테이션들을 bean으로 등록

 

해당 경로의 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("객체이름")을 사용한다.

 

반응형