首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring引导不运行调度程序@调度

Spring引导不运行调度程序@调度
EN

Stack Overflow用户
提问于 2020-07-22 12:41:59
回答 3查看 969关注 0票数 0

我在我的项目配置bean中使用缓存驱逐,而且它没有运行。我在另一个项目中使用了这个类,并且工作得很好,但我现在不知道问题在哪里。

代码语言:javascript
复制
@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的其他地方,因为当我使用:

代码语言:javascript
复制
@PostConstruct
void init() {
    log.info("Init...");
}

那就什么都没有了。我查看了跟踪弹簧日志,没有错误,类在类路径中。我不知道哪里会有问题。

我在gradle中有以下依赖项:

代码语言:javascript
复制
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:

代码语言:javascript
复制
@ConfigurationPropertiesScan
@SpringBootApplication
@EnableCaching
@EnableScheduling
public class MyApp{...}

编辑:--我发现在我的配置中存在这个问题:

代码语言:javascript
复制
main:
    lazy-initialization: true

我认为当Scheduler处于活动状态时就会创建bean。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-27 07:10:00

解决方案处于禁用功能中:

代码语言:javascript
复制
spring:
   main:
     lazy-initialization: false
票数 1
EN

Stack Overflow用户

发布于 2020-07-22 19:12:46

看起来您使用的是网络流量,您可能需要返回可以订阅的发布服务器(Mono或Flux),例如:

代码语言:javascript
复制
public Mono<Void> cachePosEvict() {
    log.info("Evicting cache: {}", CACHE_NAME);
}
票数 0
EN

Stack Overflow用户

发布于 2020-07-22 19:33:53

定期从缓存中删除所有条目。要么你有一个非常具体的用例,要么你做错了。

我想你是用咖啡因来实现的。在本例中,请考虑通过专用属性配置缓存过期:

代码语言:javascript
复制
spring.cache.caffeine.spec=expireAfterWrite=5s

这里有更多信息:

https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#cache-properties

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63034448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档