작성
·
423
0
안녕하세요 영한님의 코드를 잘못 따라 치다가 static이 아닌 public class TestBean으로 작성하고 test를 실행해보았는데요
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'autowiredTest.TestBean': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.autowired.AutowiredTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.autowired.AutowiredTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
라고 떠서 질문 남깁니다!
왜 static으로 말고 public으로 할시 저런 문제점이 생길까요?
답변 미리 감사합니다!
답변 1
0
안녕하세요. 박영민님, 공식 서포터즈 OMG입니다.
동일한 질문에 대한 영한님의 답변과 잘 정리된 정리 글 링크 첨부합니다 :)
https://www.inflearn.com/questions/110694
https://www.inflearn.com/questions/257297
감사합니다.
테스트에서의 동작까지는 알지 못하나 @SpringBootTest를 선언한 테스트를 진행 시 스프링 애플리케이션가 동일하게 스프링 컨테이너가 실행되기 때문에 애플리케이션 구동 흐름과 동일하거나 비슷하게 흘러가지 않을까 싶습니다.
아는 분 계시면 답변 부탁드립니다^^!
아 감사합니다! 완전히 이해했는데요 궁금한점이 한가지 더생겨서요 spring에서 test를 run을 할경우 class파일을 읽어드리기 전에 @붙은 애너테이션을 먼저 확인하기 때문에 static으로 내부클래스를 선언 안 할 시에는 bean으로 등록이 안된다는게 맞나요? 또한 반대로 static으로 해주어야 내부클래스가 외부 클래스가 등록되기 전에 static변수 클래스로 올라가기때문에 spring에서 bean으로 등록 가능한거구요 이해한부분이 맞는지 확인 부탁드릴께요!ㅎ