The Debugging Chronicles : "코드의 미학"
UnsatisfiedDependencyException 본문
DI 모호성 에러
만약 Spring 작업 중
org.springframework.beans.factory.UnsatisfiedDependencyException 오류가 발생했다면
객체의 의존성을 주입했는지를 확인해야한다.
@Component("apple")
public class IPhone implements Phone {
@Autowired // 메모리의 자료형(타입)을 인지해서 주입해줌
// 주입대상 모호성 에러
///// @Qualifier("aw")
private Watch watch; // 의존 주입 대상(DI 대상
public IPhone() {
System.out.println("아이폰 객체 생성 01");
}
/*
public IPhone(Watch watch) {
this.watch=watch;
System.out.println("아이폰 객체 생성 02");
}
public IPhone(Watch watch,int num) {
this.watch=watch;
this.num=num;
System.out.println("아이폰 객체 생성 03");
}
*/
@Override
public void powerOn() {
this.watch.powerOn();
}
@Override
public void powerOff() {
this.watch.powerOff();
}
public Watch getWatch() {
return watch;
}
public void setWatch(Watch watch) {
this.watch = watch;
}
}
@Component("galaxy")
public class GalaxyPhone implements Phone {
@Autowired // 메모리의 자료형(타입)을 인지해서 주입해줌
///// @Qualifier("gw")
private Watch watch;
public GalaxyPhone() {
System.out.println("갤럭시 객체 생성 01");
}
public GalaxyPhone(Watch watch) {
this.watch=watch;
System.out.println("갤럭시 객체 생성 02");
}
@Override
public void powerOn() {
this.watch.powerOn();
}
@Override
public void powerOff() {
this.watch.powerOff();
}
public Watch getWatch() {
return watch;
}
public void setWatch(Watch watch) {
this.watch = watch;
}
}
1. .xml 의존성 확인
만들어둔 applicationContext.xml 을 확인했을때
<context:component-scan base-package="test" />
<bean class="problam.GalaxyWath" id="gw" />
읽어야하는 패키지와 객체의 DI(의존성)을 부여 했는지를 확인해준다.
2. 어노테이션 확인
@Component 어노테이션과 @Autowired 어노테이션가 사용되어 있는지
@Component 어노테이션에 사용할 객체명이 들어가 있는지를 확인해 주어야한다.