-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
MessageSource를 ms로 바꾸면 Could not autowire라고 나옵니다.
22.05.18 18:40 작성 조회수 407
1
제목과 같이 MessageSource 변수명을 ms로 바꾸면 빨간줄이 나오는데 어떻게 해결해야 하나요?
강의 소스를 열어도 똑같이 빨간줄이 나옵니다.ㅜㅠ
@Aotuwired위에
@Qualifier("messageSource")
를 하면 되기는 하는데 왜 저는 @Qualifier을 해야 되는 걸까요?
답변을 작성해보세요.
1
OMG
2022.05.18
안녕하세요. lwisekiml님, 공식 서포터즈 OMG입니다.
제공해드리는 프로젝트 코드에서
"message" 폴더를 열어서 코드 수정 하지않고 확인해주세요.("message-start" X)
제공해드리는 프로젝트 코드를 제 개발환경에서 인텔리제이 커뮤니티 버전(좌), 얼티메이트 버전(우) 다 확인해보았는데 올리신 에러메시지는 출력되지 않았습니다.
감사합니다.
lwisekiml
질문자2022.05.19
"message" 폴더에 있는 코드도 역시 빨간 줄이 나옵니다.
하다가 다른 해결 방법을 찾았는데, 위 사진과 같이 ms를 messageSource로 다 고치면 실행이 되는데 이유를 모르겠습니다. 혹시 이유를 알 수 있을까요?
OMG
2022.05.19
@Autowired는 타입 매칭 시도 후, 동일 타입이 존재하면 필드명으로 매칭을 시도하는데 이 부분에서 문제가 발생하는 것 같습니다.
생성자 주입으로 바꿔서 해보시겠어요?
private final MessageSource ms;
@Autowired
public MessageSourceTest(MessageSource messageSource) {
this.ms = messageSource;
}
+
다른 클래스에서도 필드 주입으로 메시지소스 주입 시 동일한 에러가 발생하는지요?
lwisekiml
질문자2022.05.20
생성자 주입으로 하니 정상 동작합니다.
생성자 주입 관련 공부도 다시 해봐야 겠네요. 감사합니다.^^
+ 메시지, 국제화 강의에서 사용하는 다른 클래스에서는 @Autowired를 사용하지 않아 잘은 모르겠습니다. 여태까지 강의를 들으면서 이런 경우는 처음인것으로 보아 어느 부분인지는 모르지만 제 인텔리제이 설정이나 다른 부분이 잘못 되었을꺼 같습니다.
단순히 빨간줄만 없애는 것은 @SpringBootTest를 지우면 빨간 줄은 사라지지만, helloMessage()실행하면 아래와 같이 실행은 안됩니다.
답변 1