해결된 질문
작성
·
1.2K
0
ApplicationContext ac = new AnnotationConfigApplicationContext(TestBean.class);
해당 코드를 통해서 TestBean 클래스가 컨테이너에 빈으로 등록이 되었으나,
TestBean 클래스 내부의 @Autowired 어노테이션의 warning을 살펴보니 **Autowired members must be defined in valid Spring bean** 라는 경고 문구를 볼 수 있었습니다.
해당 내용은, 자동의존주입을 받기 위해서는 현재 클래스 또한 스프링 빈으로 등록되어 있어야 한다는 의미로 해석했습니다.
결론은, 이러한 경고가 뜨는 이유를 잘 모르겠습니다.
ide가 이 시점에 경고를 잡아주지 못하는 것인가요?
한가지 더 질문을 드리자면,
TestBean 클래스에 @Configuration 애노테이션을 붙이게 되면,
@Autowired
public void setNoBean2(@Nullable Member noBean2) {
System.out.println("noBean2 = " + noBean2);
}
해당 코드에서 noBean2 부분에 빨간 밑줄이 생깁니다. (Could not autowire. No beans of 'Member' type found.)
Member 타입의 빈을 찾을 수 없기 때문에 자동주입을 할 수 없다는 의미인데, 당연히 Member는 빈이 아니지만 왜 @Configuration 애노테이션을 붙였을 때 빨간 밑줄이 뜨는지 이유가 궁금합니다.
@Autowired
public void setNoBean1(Member noBean1) {
System.out.println("noBean1 = " + noBean1);
}
해당 코드 역시 @Configuration 애노테이션이 붙었을 때 noBean1에 빨간 밑줄이 뜹니다.