인프런 커뮤니티 질문&답변

신준석님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 기본편

옵션 처리

TestBean 클래스 관련 질문입니다.

해결된 질문

20.12.29 13:38 작성

·

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에 빨간 밑줄이 뜹니다.

답변 3

1

신준석님의 프로필 이미지
신준석
질문자

2020. 12. 31. 23:24

귀중한 시간 내주셔서 감사합니다.

1

김영한님의 프로필 이미지
김영한
지식공유자

2020. 12. 31. 22:45

안녕하세요. 준석님 

저도 같은 내용이 발생하는데, 저희가 컨테이너를 직접 만들고 그래서, IDE가 잘 인식하지 못하는 듯 합니다.

@Configuration의 경우도 테스트에서 저희가 직접 컨테이너를 만들고 있으니 IDE가 잘 인식을 못하는 듯 합니다.

감사합니다.

1

김영한님의 프로필 이미지
김영한
지식공유자

2020. 12. 29. 23:19

안녕하세요. 신준석님

예제는 잘 동작하는데, IDE 경고가 뜬다는 말씀이지요?

저도 한번 확인해볼게요. 전체 프로젝트를 압축해서 올려주세요.

감사합니다.