[Spring] Autowired 관련 오류

Fraise_KIM·2023년 8월 14일
0

⛔️ UnsatisfiedDependencyException ... NoSuchBeanDefinitionException

  • 스프링 빈 등록이 안 되어 있어 자동 주입할 대상이 없는데 자동 주입하려는 경우

💡 자동 주입 대상을 옵션으로 처리하기

  • @Autowired는 required 옵션의 기본값이 true이기 때문에,
    자동 주입 대상이 없으면 위와 같은 에러가 난다.
  • 주입할 스프링 빈이 없어도 동작하기 위해서는 자동 주입 대상을 옵션으로 처리하면 된다.

@Autowired(required = false)
public void case1(Board board1){
 // 현재 Board 클래스는 스프링 빈으로 등록 안 되어 있음
}

@Autowired
public void case2(@Nullable Board board2){
	...
}

@Autowired
public void case3(Optional<Board> board3){
	...
        }
  • case1 : 자동 주입할 대상이 없어 메서드 자체가 호출이 안된다.
  • case2 : 자동 주입할 대상이 없어도 호출은 되지만, null이 입력된다.
  • case3 : 자동 주입할 대상이 없어도 호출은 되지만, ‘Optional Empty’가 입력된다.

1개의 댓글

comment-user-thumbnail
2023년 8월 14일

정보에 감사드립니다.

답글 달기