shedlock 启动失败问题。No qualifying bean of type 'net.javacrumbs.shedlock.core.LockProvider' available
网上找了很多资料,还是一头雾水。有人说是版本问题。折腾好几个版本。发现依然报错。springboot2.1.5版本<dependency><groupId>net.javacrumbs.shedlock</groupId><artifactId>shedlock-spring</artifactId>&...
·
网上找了很多资料,还是一头雾水。有人说是版本问题。折腾好几个版本。发现依然报错。
springboot的版本 2.1.5
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-spring</artifactId>
<version>3.0.0</version>
</dependency>
<!--shedlock-mongo 这里采用mongodb作为中间表用于记录任务信息-->
<dependency>
<groupId>net.javacrumbs.shedlock</groupId>
<artifactId>shedlock-provider-mongo</artifactId>
<version>3.0.0</version>
</dependency>
解决方式:
发现在看源码的过程总是提示,LockProvider没有注册到bean里面去。
@Component 在代码中加入该注解,实际上该注解失效。
@Component
public class ScheduledLock {
private static final int lockTime = 30000;
@Scheduled(cron = "0/2 * * * * ?")
@SchedulerLock(name = "scheduledTask", lockAtMostFor = lockTime, lockAtLeastFor = lockTime)
public void run()
{
System.out.print(new Date().toString() + "\n");
}
}
知道了问题所在。
关键点:在application启动类上加上@ComponentScan(basePackages = { “com.example.config”})
ScheduledLock类就在com.example.config下。通过@ComponentScan去扫描该包下面的东西。至此问题解决。
更多推荐
已为社区贡献1条内容
所有评论(0)