原因
是因为web.xml配置错误
导致ContextLoaderListener和DispatcherServlet扫描注解时,形成了两个上下文环境,quartz注解被扫描了两次
ContextLoaderListener和DispatcherServlet的关系,请参考:https://www.cnblogs.com/weknow619/p/6341395.html
解决办法(不一定适用所有情况)
1. ContextLoaderListener正常加载所有配置,
包扫描基础路径,扫描所有文件
<!-- Spring config start -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-*.xml,classpath*:consumer.xml,classpath*:activeMQ.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
2. DispatcherServlet只加载mvc配置
<!-- springMVV配置DispatchcerServlet -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<!-- 配置Spring mvc下的配置文件的位置和名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
同时,spring-mvc.xml配置自己的包扫描基础路径,只扫描controller
<context:component-scan base-package="com.xxx.controller" />