The Debugging Chronicles : "코드의 미학"

UnsatisfiedDependencyException 본문

오류 원인 분석 해결 방안

UnsatisfiedDependencyException

sweetseonah1004 2024. 10. 4. 11:58

 

 

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 어노테이션에 사용할 객체명이 들어가 있는지를 확인해 주어야한다.