listener 등록
- 작성자 :
- 김*현
- 작성일 :
- 2013-12-05 12:51:30
- 조회수 :
- 895
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.test.com.listener.TestListener</listener-class>
</listener>
ServletContextListener를 구현한 새로운 리스너를 생성하여 해당 리스너에서 service 클래스의 조회 메서드를 호출하려고 합니다.
dao, service 클래스의 빈이 생성된것은 로그로 확인하였으나 생성한 리스너에서 service 클래스의 조회 메서드 호출시 nullpointexception이 발생합니다.
리스너를 생성후 해당 리스너에서 서비스의 조회 처리를 하는 메서드를 호출해야 하는데 이 경우 어떻게 처리 해야 하나요...
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.test.com.listener.TestListener</listener-class>
</listener>
ServletContextListener를 구현한 새로운 리스너를 생성하여 해당 리스너에서 service 클래스의 조회 메서드를 호출하려고 합니다.
dao, service 클래스의 빈이 생성된것은 로그로 확인하였으나 생성한 리스너에서 service 클래스의 조회 메서드 호출시 nullpointexception이 발생합니다.
리스너를 생성후 해당 리스너에서 서비스의 조회 처리를 하는 메서드를 호출해야 하는데 이 경우 어떻게 처리 해야 하나요...
A
안녕하세요. 김도현님
dao빈을 생성해서 쿼리를 실행하실려고 하시는 지요?
web.xml에서 리스너를 생성해서 스프링 컨테이너에 있는 빈에 대해서 접근을 할 수가 없습니다.
그렇기 때문에 별도로 작성하신 리스너에서 해당 빈을 가져오기 위해서는 직접적으로 해당빈을 생성하셔서 getBean을 통해서 호출을 해 주셔야 합니다.
예시)
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"services.xml", "daos.xml"});
Foo foo = (Foo)context.getBean(“foo”);
또한 iBatis 등을 사용하시기 위해서도 ClassPathXmlApplicationContext 등을 통해서 빈을 선언해서 사용하셔야 합니다.
하지만 리스너 대신에 인터셉터를 이용해서 비슷한 기능을 구현할 수가 있습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:handlermapping&s[]=interceptor
고맙습니다.
dao빈을 생성해서 쿼리를 실행하실려고 하시는 지요?
web.xml에서 리스너를 생성해서 스프링 컨테이너에 있는 빈에 대해서 접근을 할 수가 없습니다.
그렇기 때문에 별도로 작성하신 리스너에서 해당 빈을 가져오기 위해서는 직접적으로 해당빈을 생성하셔서 getBean을 통해서 호출을 해 주셔야 합니다.
예시)
ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"services.xml", "daos.xml"});
Foo foo = (Foo)context.getBean(“foo”);
또한 iBatis 등을 사용하시기 위해서도 ClassPathXmlApplicationContext 등을 통해서 빈을 선언해서 사용하셔야 합니다.
하지만 리스너 대신에 인터셉터를 이용해서 비슷한 기능을 구현할 수가 있습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:ptl:handlermapping&s[]=interceptor
고맙습니다.