관련 포스팅 > 2022.12.27 - [여러가지/웹과 개발] - [SERVLET, JSP] 다양한 이벤트 리스너(Listener)
커스텀 리스너를 작성하고 다른 서비스나 DAO 사용을 위해 @Autowired로 빈 주입을 하면 오류가 발생한다.
사실 전에 봤던 에러는 500 에러가 아니였던거같은데 쨋든, 대충 로그를 보면 @Autowired를 인식하지 못하는 빈 주입이 안되는 오류가 발생한다.
구글링했을 때 어디서 서블릿 리스너만 해당인지 모든 리스너인지 모르겠는데 빈 사이클과 다르게 흘러가서? @Autowired가 제대로 적용 안된다고 보았다.
그 포스팅을 다시 한번 읽어보고싶은데 도저히 아무리 구글링해도 안나온다..... 누가 찾으면 젭알 알려주세요...🙏🏻
암튼 리스너에서 @Autowired로 빈 주입이 안될 때 직접 주입해주는 방법
먼저 리스너 내에서 어떤 서비스나 DAO와 같은 객체가 필요할 때 아래처럼 정의를 하게 되는데 막상 주입은 안되는 문제 발생
@Autowired
private BoardService boardService;
@Autowired
private MemberDAO memberDAO;
그럼 직접 어플리케이션 컨텍스트 정보에서 해당 빈을 찾아 직접 설정해준다.
WebApplicationContext ctx=WebApplicationContextUtils.getWebApplicationContext(sre.getServletContext());
this.boardService=(BoardService)ctx.getBean("boardService");
this.memberDAO=(MemberDAO)ctx.getBean("memberDAO");
* 주의할 점은 주입할 객체로 형변환을 해줘야 한다는 점과 빈 이름을 잘 매핑해야한다는 점!
WebApplicationContext는 DispatcherSerlvet에 의해 생성되며 DispatcherSerlvet이 직접 사용하는 컨트롤러를 포함한 웹 관련 빈을 등록하는데 사용한다. DispatcherSerlvet는 독자적인 WebApplicationContext를 가진다.
어플리케이션 컨텍스트에 대해 자세한건 다음에..
[SPRING] ServletRequestEvent To Session | 커스텀ServletRequestListener에서 Session 이용하기 (0) | 2022.12.27 |
---|---|
[SPRING SECURITY] SessionRegistry 이용하기 (1) | 2022.11.20 |
[SPRING SECURITY] ConcurrentSessionFilter 이용하여 동시접속 제어하기 (0) | 2022.11.20 |
[SPRING SECURITY] 세션관리를 위한 SessionManagementFilter와 ConcurrentSessionFilter (0) | 2022.11.20 |
[SPRING BOOT] 2521 과몰입러의 스프링부트 웹소켓 채팅 서비스 만들기(2) 화면구성과 JS (0) | 2022.03.15 |
댓글 영역