본문 바로가기

java

[Spring] Unsatisfied dependency expressed through field

spring 5 tutoroial을 하다가 "Unsatisfied dependency expressed through field " 에러가 났다.

 

Bean 설정시 필요한 것들이 빠졌기 때문에 해당 Exception이 뜨는 것이라고 한다.

나의 경우는 ApplicationContext 생성자에 Configuration annotation이 달린 class를 모두 전달하지 않아서 해당 오류가 발생했었다.

예를 들면 다음과 같은 상황이다.

config1.java

@Configuration
public class Config1 {
	
	@Bean
	public Class1 class1() {
		return new Class1()
	}
}


config2.java

@Configuration
public class Config2 {

	@Autowired
    private Class1 class1
	
	@Bean
	public Class2 class2() {
		return new Class2(class1)
	}
}


in main

private static ApplicationContext ctx = null;
ctx = new AnnotationConfigApplicationContext(Config2.class);
/*
 * Config1 를 등록하지 않음
 * /


만약 위와 같이 사용하고 싶다면, Config2에 import annotation으로 Config1을 추가하면 된다.

@Configuration
@Import(Config1.class)
public class Config2 {

	@Autowired
    private Class1 class1
	
	@Bean
	public Class2 class2() {
		return new Class2(class1)
	}
}

 

tutorial용 책은 Config1에 Import Annotation을 붙이는 방식을 사용했다.
둘다 동작은 하는데, 책이 왜 이렇게 설명하는지는 알아봐야겠다.

참고
https://stajun.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%98%A4%EB%A5%98-unsatisfied-dependency-expressed-through-field
https://binshuuuu.tistory.com/292