[SPRING] Spring을 사용하여 HttpSessionListener에 의존성을 주입하는 방법은 무엇입니까?
SPRINGSpring을 사용하여 HttpSessionListener에 의존성을 주입하는 방법은 무엇입니까?
context.getBean ( "foo-bar")처럼 Spring을 사용하고 호출없이 HttpSessionListener에 종속성을 주입하는 방법?
해결법
-
==============================
1.Servlet 3.0 ServletContext에는 "addListener"메소드가 있기 때문에 web.xml 파일에 리스너를 추가하는 대신 다음과 같이 코드를 추가 할 수 있습니다.
Servlet 3.0 ServletContext에는 "addListener"메소드가 있기 때문에 web.xml 파일에 리스너를 추가하는 대신 다음과 같이 코드를 추가 할 수 있습니다.
@Component public class MyHttpSessionListener implements javax.servlet.http.HttpSessionListener, ApplicationContextAware { @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { if (applicationContext instanceof WebApplicationContext) { ((WebApplicationContext) applicationContext).getServletContext().addListener(this); } else { //Either throw an exception or fail gracefully, up to you throw new RuntimeException("Must be inside a web application context"); } } }
즉, "MyHttpSessionListener"에 정상적으로 삽입 할 수 있다는 것을 의미합니다.이 경우 응용 프로그램 컨텍스트에서 Bean이 존재하면 리스너가 컨테이너에 등록됩니다
-
==============================
2.Spring 컨텍스트에서 HttpSessionListener를 bean으로 선언하고 web.xml에 위임 프록시를 실제 리스너로 등록 할 수 있습니다.
Spring 컨텍스트에서 HttpSessionListener를 bean으로 선언하고 web.xml에 위임 프록시를 실제 리스너로 등록 할 수 있습니다.
public class DelegationListener implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) { ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext( se.getSession().getServletContext() ); HttpSessionListener target = context.getBean("myListener", HttpSessionListener.class); target.sessionCreated(se); } ... }
-
==============================
3.Spring 4.0에서는 3과 함께 작동하지만, 아래에 설명 된 예제를 구현하여 ApplicationListener
를 청취하고 HttpSession을 주입합니다. https://stackoverflow.com/a/19795352/2213375 Spring 4.0에서는 3과 함께 작동하지만, 아래에 설명 된 예제를 구현하여 ApplicationListener
를 청취하고 HttpSession을 주입합니다. https://stackoverflow.com/a/19795352/2213375
from https://stackoverflow.com/questions/2433321/how-to-inject-dependencies-into-httpsessionlistener-using-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring MVC의 컨텍스트 이해하기 (0) | 2018.12.20 |
---|---|
[SPRING] Spring 부트 애플리케이션에 서블릿 필터 추가하기 (0) | 2018.12.20 |
[SPRING] 컨텍스트 : 구성 요소 스캔 "이 바인딩되지 않았습니다. (0) | 2018.12.20 |
[SPRING] 새 키워드로 생성 된 Spring bean (@Component)의 자동 와이어 링 (0) | 2018.12.20 |
[SPRING] Spring Annotation 기반 컨트롤러가 jar 파일 내부에 있으면 작동하지 않습니다. (0) | 2018.12.20 |