spring 配置定时器报错希望高手来帮忙看看解决解决

yangfan321p 2017-07-27 06:36:55
用的是spring框架,客户的需求是每分钟执行一次overtime的方法,但是定时器配置完了,项目启动一直报错,换了很多种配置方法还是不行
下面是applicationcontext.xml里面的配置包括定时器和其他配置

<!-- 定时同步hzrsda数据 -->
<bean id="jsonCountService" class="com.zjhy.spring.server.EventServerImpl" />


<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="triggerA" />
</list>
</property>
<property name="autoStartup" value="true" />
</bean>


<!-- 同步全部信息的定时器 -->
<bean id="triggerA"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetailA" />
<property name="cronExpression" value="0 0/1 * * * ?" />
<!-- 每分钟执行一次 -->
</bean>


<bean id="jobDetailA" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="jsonCountService" />
<property name="targetMethod" value="OverTime" />
<property name="concurrent" value="false" />
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
<context:component-scan base-package="com.zjhy.spring.*">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>
<mvc:annotation-driven>
</mvc:annotation-driven>
<!-- 配置DataSource的xml -->
<!-- 读取db.properties的内容 -->
<!-- <util:properties id="jdbc" location="classpath:conf/db.properties"></util:properties> -->
<!-- 配置DataSource -->
<!-- <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> -->
<!-- <property name="driverClassName" value="#{jdbc.driver}"></property> -->
<!-- <property name="url" value="#{jdbc.url}"></property> -->
<!-- <property name="username" value="#{jdbc.user}"></property> -->
<!-- <property name="password" value="#{jdbc.pwd}"></property> -->
<!-- </bean> -->


<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactroy" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入DataSource的信息 -->
<property name="dataSource" ref="ds"></property>
<!-- 注入映射文件的位置信息-->
<property name="mapperLocations" value="classpath:/*.xml"></property>
</bean>

<!--
配置MapperScannerConfigurer
扫描指定包下面所有的Mapper接口
创建符合Mapper接口要求的对象,并且会将创建好的对象放到spring容器里
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入要扫描的包名 -->
<property name="basePackage" value="com.zjhy.spring.*"></property>
<!-- 可以省略
<property name="sqlSessionFactroy" ref="sqlSessionFactroy"></property>
-->
</bean>
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="number_format">0.##########</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="classic_compatible">true</prop>
<prop key="template_exception_handler">ignore</prop>
</props>
</property>
</bean>

下面这是报错信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jsonCountService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventDao': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire method: public final void org.mybatis.spring.support.SqlSessionDaoSupport.setSqlSessionFactory(org.apache.ibatis.session.SqlSessionFactory); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jobDetailA' defined in file [C:\work\Event_management\target\classes\conf\applicationcontext.xml]: Instantiation of bean failed; nested exception is java.lang.IncompatibleClassChangeError: Implementing class



项目结构

实现类

在实现类中要实现的方法

web.xml的配置


不太懂怎么会去建eventDao的bean,这是接口,怎么能创建,希望高手来看看
...全文
408 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangfan321p 2017-08-01
  • 打赏
  • 举报
回复
问题解决了,换了个定时器的配置方法就可以了,不过具体以前出现问题的原因,还是不清楚,我是整合了mybitis,dao的实现是mapper.xml,照道理应该不用写个实现类的,但是总是报无法创建bean,也许spring的配置方法比较特殊
云晴 2017-07-31
  • 打赏
  • 举报
回复
我也经常遇到这种问题
mtian2020 2017-07-31
  • 打赏
  • 举报
回复
eventDao 这个类发出来看下
yangfan321p 2017-07-31
  • 打赏
  • 举报
回复
我的是整合了mybatis所以是用mapper.xml实现的dao,所以这样到底是什么问题,看最后的提示又好像是jar包冲突
Tatum_99999 2017-07-28
  • 打赏
  • 举报
回复
eventDao在EventServerImpl中注入了,但是并没有这个bean。也就是说eventDao只是一个接口,没有相应的实现类。接口必须有了实现类才能被注入,不管是直接用类的方式还是myabatis等配置的方式。
yangfan321p 2017-07-28
  • 打赏
  • 举报
回复
我觉得我的问题可能是没有配置bean实现吧,以至于报错所有的类都无法建bean
yangfan321p 2017-07-28
  • 打赏
  • 举报
回复
哦,那我现在的方法是mapper.xml 去实现接口的sql的,那这样的话怎么去改
yangfan321p 2017-07-27
  • 打赏
  • 举报
回复
eventdao我注入到实现里面了,就在eventserverimpl里面
  • 打赏
  • 举报
回复
vevendao这个实例实现你放哪里了

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧