이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 16064|회답: 2

[출처] 리스너에 @Autowired를 주입할 수 없음

[링크 복사]
게시됨 2019. 4. 4. 오후 3:23:22 | | | |
최근에 리스너를 사용할 때 spring을 주입할 수 없는 문제를 겪었습니다. 코드는 다음과 같습니다. 이 작업은 항상 null이며, 패키지는 분명히 스윕되었지만 주입할 수 없습니다.

이유는 다음과 같습니다: 리스너 리스너는 Spring 컨테이너의 @Resource이나 @Autowired 주석 방법을 사용해 빈을 주입할 수 없습니다. 왜냐하면 웹 서버 컨테이너에서는Servlet, Filter, Listener는 Spring 컨테이너로 관리되지 않습니다따라서 이 클래스들에서 Spring 주석 메서드를 직접 사용하여 필요한 객체를 주입할 수 없습니다。 여기서 서블렛의 전체 수명 주기는 서블렛 컨테이너에 의해 처리됩니다. Spring 컨테이너에 넣어 생성하면, Spring 컨테이너가 서블렛 객체를 생성할 수 있지만, 서블렛 컨테이너는 자체 컨테이너에 있지 않아 존재를 모를 수 있습니다. 따라서 서블릿은 스프링이 아니라 웹 서버에 의해 관리됩니다.

다음과 같은 수정을 하세요:

봄이라는 맥락에서 보면, 이 방법이 문제를 완벽하게 해결해줬어요.


Springboot @Autowired 문제를 주입하지 못합니다
https://www.itsvse.com/thread-6397-1-1.html
(출처: Architect_Programmer)






이전의:Bootstrap4를 이용한 요소를 표시하고 숨기는 방법
다음:Java annotations@PostConstruct과 자세한 설명 및 예시@PreDestroy
 집주인| 게시됨 2019. 4. 4. 오후 3:54:53 |
엔티티 리스너를 @Component로 설정해도 JPA는 실제로 Spring이 관리하는 빈이 아니라 클래스의 인스턴스만 사용하고 있습니다. 그래서 NullPointerException이 발생하는 것입니다. accountHistoryRepo는 항상 비어 있을 거예요.

https://stackoverflow.com/questi ... n-using-postpersist

상태 없는 빈에 의존성을 주입하는 해킹은 의존성을 "정적"으로 정의하여 Spring이 의존성을 주입할 수 있도록 세터 메서드를 만드는 것입니다(정적 의존성에 할당).

의존성을 정적으로 선언하세요.



스프링이 주입할 수 있는 메서드를 만드세요.



리소스:https://stackoverflow.com/questi ... -jpa-entitylistener
 집주인| 게시됨 2019. 4. 4. 오후 4:03:23 |
제 해결책은 다음과 같습니다:


리소스:하이퍼링크 로그인이 보입니다.
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com