Exception in thread “main” java.lang.AbstractMethodError: org.springframework.boot.context.config.ConfigFileApplicationListener.supportsSourceType(Ljava/lang/Class;)Z
今天想学习 一下SpringBoot2的Scheduled定时任务功能。在网上搜了几篇博客看下,都说很简单。就把之前的一个工程文件打开,在启动类加上注解@EnableScheduling,在ServiceImpl方法上加上注解@Scheduled(cron = “30,40,50 * * * * ?”),想测试一下分别在30秒,40秒,50秒的时候,是不是能自动执行我写的一个简单的MybatisPlus3.x插入记录的功能。一启动,就报如标题上的错误提示。经过漫长的四个小时的上网查找相关报错的解决方法,加上最后一刻自己的福至心灵,终于解决问题。程序跑通,能正常定时执行sql插入命令。感觉很有必要复盘一下。记录如下。
之前的那个工程,是从网上下载的一个网友的MybatisPlus3.x的SpringMVC示例项目。由于公司项目都是用的SpringBoot2.x,我就把它改造了一下。平时的测试方法都是直接写在Controller层,没有另外去写service。还有它原来带过来的一些MVC配置文件没有删除。反正能跑起来,测试感受一下MP3.X的简洁sql用法,也还感觉 不错。
可是,今天我写了一个service及实现类,就报如标题所示的错误了。百思不得解。
找到的网上第一篇文章说,把springboot的版本改成1.5.19就对了,改了是能行,但是,我们现在的项目都是springboot2.1的,不能这样往后退啊。第二篇文章说是要加一个Listener到web.xml,网上搜了一下,才发现springboot是不需要配web.xml文件的。第三篇文章说要在启动类中加@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}),去掉数据源的引用,发现也不行。第四篇文章说引用jar包有冲突,说在idea中打开pom的依赖图表,删除冲突。我点了两下,没有删除掉那根红线。突然发现是springboot指向了spring-context。于是就在疑惑srping-boot,跟spring-context是啥关系。回到我的项目的pom中,
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
突然感觉,这是spring的配置,会不会是多余的呢?那springboot是不是还需要多加这样的配置呢?网上一查,才明白,springboot已经含了这两样依赖。去掉后,程序正常。不再报错。
总结: 如果程序报了很奇怪的错误,网上也很难查到有同样的错误解决方法的话,考虑是不是jar包冲突。idea中,在pom文件鼠标右键,查看diagram 依赖表,看有没有红线,再根据红线的指向关系,判断是否是相关引入组件有冲突。
————————————————
版权声明:本文为CSDN博主「流水晓风1」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lx12345_/article/details/89426533