我有一個有點復雜的應用程式配置,我試圖將其映射到 POJO,但它不起作用。我看過例子并認為這是正確的方法。
應用程式屬性:
app.activeEnv=dev
debug=true
logging.level.com.nationwide.ess.contentcollector=DEBUG
app.nas1Root=/Users/userid/devl/ICC_DEV
app.nas2Root=ohlewnas0130.nwie.net
task.triggerCron=* * * * * *
task.job[0].name=CCC
task.job[0].monitor[0]=${app.nas1Root}/Claims/CCC/index
task.job[0].monitor[1]=${app.nas2Root}/Folder/CCC/index
task.job[0].processed=${app.nas2Root}/Processed/CCC_Claims
task.job[0].errors=${app.nas1Root}/Errors/CCC_Claims
task.job[0].triggerTimes[0]=15:55
task.job[0].triggerTimes[1]=16:00
task.job[1].name=CIF
task.job[1].monitor[0]=${app.nas1Root}/Policy/CIF_OV
task.job[1].processed=${app.nas1Root}/Processed/CIF_Dist
task.job[1].errors=${nas1Root}/Errors/CIF_Dist
task.job[1].triggerTimes[0]=12:00
應用程式屬性.java:
package com.nationwide.ess.contentcollector.config;
import java.util.List;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@ConfigurationProperties(prefix="app")
public class ApplicationProperties {
private String activeEnv;
private String nas1Root;
private String nas2Root;
@Bean
@ConfigurationProperties(prefix = "task")
public static Task task() {
return new Task();
}
@Data
@NoArgsConstructor
public static class Task {
private String triggerCron;
private List<Job> job;
@Data
@NoArgsConstructor
public static class Job {
private String name;
private List<String> monitor;
private String processed;
private String errors;
private List<String> triggerTimes;
}
}
}
內容收集器應用程式.java:
package com.nationwide.ess.contentcollector;
import com.nationwide.ess.contentcollector.config.ApplicationProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
@EnableConfigurationProperties(ApplicationProperties.class)
public class ContentCollectorApplication {
static final Logger log = LoggerFactory.getLogger(SpringApplication.class);
public static void main(String[] args) {
SpringApplication.run(ContentCollectorApplication.class, args);
}
}
但是當它運行時,ApplicationProperties 只有“app”級別的值(沒有 task 和 task.job)。
uj5u.com熱心網友回復:
將Task類移動到它自己的檔案中,然后每當您需要這些屬性時,您只需要宣告對TaskPropertiesSpring 管理的 bean的依賴,以便 Spring 注入它(假設它是對另一個 Spring 管理的 bean 的依賴):
@Data
@NoArgsConstructor
@ConfigurationProperties(prefix = "task")
public class TaskProperties {
private String triggerCron;
private List<Job> job;
@Data
@NoArgsConstructor
public static class Job {
private String name;
private List<String> monitor;
private String processed;
private String errors;
private List<String> triggerTimes;
}
}
由于我不完全確定靜態嵌套Job類,如果前面的不起作用,那么嘗試移動Job到它自己的檔案,如下所示:
@Data
@NoArgsConstructor
@ConfigurationProperties(prefix = "task")
public class TaskProperties {
private String triggerCron;
private List<Job> job;
}
@Data
@NoArgsConstructor
public static class Job {
private String name;
private List<String> monitor;
private String processed;
private String errors;
private List<String> triggerTimes;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/346866.html
上一篇:如何將欄位從正文添加到條件
