⛔️ UnsatisfiedDependencyException ... NoSuchBeanDefinitionException
- 스프링 빈 등록이 안 되어 있어 자동 주입할 대상이 없는데 자동 주입하려는 경우
💡 자동 주입 대상을 옵션으로 처리하기
- @Autowired는 required 옵션의 기본값이 true이기 때문에,
자동 주입 대상이 없으면 위와 같은 에러가 난다.
- 주입할 스프링 빈이 없어도 동작하기 위해서는 자동 주입 대상을 옵션으로 처리하면 된다.
@Autowired(required = false)
public void case1(Board board1){
}
@Autowired
public void case2(@Nullable Board board2){
...
}
@Autowired
public void case3(Optional<Board> board3){
...
}
- case1 : 자동 주입할 대상이 없어 메서드 자체가 호출이 안된다.
- case2 : 자동 주입할 대상이 없어도 호출은 되지만, null이 입력된다.
- case3 : 자동 주입할 대상이 없어도 호출은 되지만, ‘Optional Empty’가 입력된다.
정보에 감사드립니다.