java - Spring Boot 不运行调度程序 @Scheduled
问题描述
我在我的项目配置 bean 中使用了缓存驱逐,但它没有运行。我在另一个项目中使用了这个类并且工作正常,但我不知道现在问题出在哪里。
@Configuration
@Slf4j
public class CacheConfig {
public static final String BANKCODE_CACHE_NAME = "cacheName";
@CacheEvict(allEntries = true, cacheNames = { CACHE_NAME })
@Scheduled(fixedRate = 5000)
public void cachePosEvict() {
log.info("Evicting cache: {}", CACHE_NAME);
}
}
问题可能出在这个配置 bean 的其他地方,因为当我使用时:
@PostConstruct
void init() {
log.info("Init...");
}
然后日志中没有任何内容。我查看了 TRACE spring 日志,没有错误,类在类路径中。我不知道哪里有问题。
我在 gradle 中有以下依赖项:
plugins {
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
ext {
set('springCloudVersion', "Hoxton.SR6")
webfluxUiVersion = "1.3.9"
jacksonVersion = "2.10.1"
logbackJson = "0.1.5"
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation "org.springdoc:springdoc-openapi-webflux-ui:${webfluxUiVersion}"
implementation "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}"
implementation "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}"
implementation "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}"
implementation "com.fasterxml.jackson.dataformat:jackson-dataformat-xml:${jacksonVersion}"
implementation "ch.qos.logback.contrib:logback-json-classic:${logbackJson}"
implementation "ch.qos.logback.contrib:logback-jackson:${logbackJson}"
我将 Java 11 与 Main 类一起使用:
@ConfigurationPropertiesScan
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class MyApp{...}
编辑:我发现问题出在我的配置中:
main:
lazy-initialization: true
我认为当调度程序处于活动状态时会创建 bean。
解决方案
解决方案是禁用功能:
spring:
main:
lazy-initialization: false
推荐阅读
- python - 获取错误将pdf提取到python中的文本
- mysql - Laravel - Mysql 从连接表中获取元素
- python - 在 pandas 数据框中找到最近的日期时间位置,从中减去 500 毫秒并将其存储在新的数据框中
- visual-studio-2010 - LNK2001 未解析的外部符号
- c# - 如果我有 .Net 4.8,是否需要安装 .Net 4.7
- javascript - AJAX:获取加载的 html 文档的元数据,如元描述
- postgresql - PG 还原设备上没有剩余空间,仅从还原失败的位置还原
- typo3 - 具有多个小部件链接的 RouteEnhancer
- reactjs - 为什么 nextjs 在我构建时会在第一次加载时加载所有页面
- angular - 在两个不同组件中具有相同行为的按钮