[SPRING] Spring ContextRefreshedevent가 두 번 호출되는 이유는 무엇입니까?
SPRINGSpring ContextRefreshedevent가 두 번 호출되는 이유는 무엇입니까?
ContextRefreshed 이벤트를 수신 대기하도록 등록 된 Spring ApplicationListener Bean이있다. 이상한 이유로 컨텍스트 초기화가 완료되면 onApplicationEvent (ContextRefreshedEvent) 메서드를 두 번 호출합니다. 이 정상적인 작동입니까 또는 구성에 문제가 있음을 나타 냅니까? 내 서블릿 컨테이너에 Jetty 8을 사용하고 있습니다.
내 관련 web.xml 구성은 다음과 같습니다.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/spring/spring-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>Spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet-mapping>
<servlet-name>Spring</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>
감사!
해결법
-
==============================
1.DispatcherServlet에 대한 contextConfigLocation을 지정하지 않았더라도 하위 컨텍스트를 만들고 두 번째 새로 고친 이벤트는 해당 컨텍스트에 대한 것입니다. event.getApplicationContext ()를 사용하여 이벤트가 어떤 컨텍스트인지 찾아냅니다.
DispatcherServlet에 대한 contextConfigLocation을 지정하지 않았더라도 하위 컨텍스트를 만들고 두 번째 새로 고친 이벤트는 해당 컨텍스트에 대한 것입니다. event.getApplicationContext ()를 사용하여 이벤트가 어떤 컨텍스트인지 찾아냅니다.
-
==============================
2.그것은 다른 사건 청취자에게도 나에게 일어났다. (ApplicationListener
) 그것은 다른 사건 청취자에게도 나에게 일어났다. (ApplicationListener
) ContextLoaderListener를 의심하고 web.xml에서 선언을 제거하면 응용 프로그램이 제대로 작동하고있었습니다. 그런 다음 ContextLoaderListener의 용도가 무엇인지 알아 내야했습니다.
Spring에서 ContextLoaderListener의 역할 / 목적은 무엇입니까?
흥미로운 대답은 다음과 같습니다.
-
==============================
3.그것은 벌레처럼 보입니다.
그것은 벌레처럼 보입니다.
https://jira.springsource.org/browse/SPR-6589
3.0을 사용하고 있다면 3.05의 최신 릴리스에서 사용해보십시오.
-
==============================
4.나도이 문제가 있었지만 그것을 고쳤다. 내 DAO에 dataSource를 주입하고 (그리고 JdbcTemplate을 인스턴스화하여) ....하지만 JDBCTemplate 용으로 구성된 Spring bean도 가지고있다.
나도이 문제가 있었지만 그것을 고쳤다. 내 DAO에 dataSource를 주입하고 (그리고 JdbcTemplate을 인스턴스화하여) ....하지만 JDBCTemplate 용으로 구성된 Spring bean도 가지고있다.
내 DAO에 jdbcTemplate을 주입 했어야하는데 ... 중복을 피하십시오.
from https://stackoverflow.com/questions/6164573/why-is-my-spring-contextrefreshed-event-called-twice by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] SpringServletContainerInitializer를 javax.servlet.ServletContainerInitializer에 캐스팅 할 수 없습니다. (0) | 2018.12.26 |
---|---|
[SPRING] 여러 프로필이 활성화되지 않은 경우 조건부로 Bean을 선언하는 방법? (0) | 2018.12.26 |
[SPRING] 스프링 데이터 mongodb - '커서'옵션이 필요합니다. (0) | 2018.12.26 |
[SPRING] Spring REST - .zip 파일을 만들어 클라이언트로 보냅니다. (0) | 2018.12.26 |
[SPRING] @RestController를 사용하여 봄 부팅을 활성화 / 비활성화 할 수 있습니까? (0) | 2018.12.26 |