我在 Spring Boot 应用程序中创建了一个 Cron 计划触发器,如下所示,它被完美地触发。问题是,当我更改下面代码中的 Cron 计划表达式并重新启动 Spring Boot 应用程序时,Cron 计划触发器没有更新,并且仍然触发旧的 Cron 计划表达式值。
在检查数据库表时,我发现表 qrtz_cron_triggers 中的记录没有更新。
qrtz_cron_triggers表中的记录是
“quartzScheduler”“Qrtz_NEReportProcessor_Job_Trigger”“默认”“0 30 22?* *”“亚洲/加尔各答”
如何确保在重新启动我的 Spring Boot 应用程序时, cron 计划表达式值得到更新?我的代码如下。
@Bean(name = "nRJobDetail")
public JobDetail nRJobDetail() {
return newJob().ofType(NEReportJob.class).storeDurably().withIdentity(JobKey.jobKey("Qrtz_NEReportProcessor_Job_Detail")).withDescription("Invoke NEReportProcessor Job service...").build();
}
@Bean
public Trigger nRTrigger(@Qualifier("nRJobDetail") JobDetail job) {
return newTrigger().forJob(job).withIdentity(TriggerKey.triggerKey("Qrtz_NEReportProcessor_Job_Trigger")).withDescription("NEReportProcessor trigger")
.withSchedule(CronScheduleBuilder.cronSchedule("0 00 23 ? * *")
)
.build();
}
Run Code Online (Sandbox Code Playgroud) 我们正在尝试从 Gradle 4.5 升级到 5.0。升级后,compileJava 失败,因为 Mapstruct 无法解析 @Mapping 注释中使用的值(getters 显然不可用)。这在 Gradle 4.5 中运行良好。
代码是这样的
@Mapper(componentModel = "spring")
public interface CAndACodeGenConverter extends BaseConverter<CGen, AGen> {
@Mapping(target = "owner", source = "owner.name")
@Mapping(target = "useCA", source = "defaultCA")
AGen convertToDto(CGen entity);
}
Run Code Online (Sandbox Code Playgroud)
我们的build.gradle是这样的
mapstructVersion = "1.4.1.Final"
lombokVersion = "1.18.12"
lombokMapstructBindingVersion = "0.2.0"
compileOnly('org.projectlombok:lombok:1.18.12')
compile("org.mapstruct:mapstruct:${mapstructVersion}")
implementation "org.mapstruct:mapstruct:${mapstructVersion}", "org.projectlombok:lombok:${lombokVersion}"
annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}", "org.projectlombok:lombok-mapstruct-binding:${lombokMapstructBindingVersion}"
Run Code Online (Sandbox Code Playgroud)
我们得到的错误是
error: No property named "owner.name" exists in source parameter(s). Did you mean "null"?
Run Code Online (Sandbox Code Playgroud)
这在 Gradle 4.5 中运行良好。
我的 build.gradle 如下:
// https://mvnrepository.com/artifact/net.sf.jasperreports/jasperreports
compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.9.0'
// https://mvnrepository.com/artifact/com.lowagie/itext
compile group: 'com.lowagie', name: 'itext', version: '2.1.7.js6'
repositories {
maven {
url 'https://repo.spring.io/libs-milestone'
}
maven {
url 'http://maven.icm.edu.pl/artifactory/repo/'
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下。
FAILURE:构建失败,出现异常。
找不到 com.lowagie:itext:2.1.7.js6。需要:项目:服务项目:服务> net.sf.jasperreports:jasperreports:6.9.0
参考链接:https : //mvnrepository.com/artifact/com.lowagie/itext/2.1.7.js6
这里出了什么问题?请帮忙。