如果application.properties中缺少一个键,如何初始化另一个键的值

时间:2018-12-21 13:34:55

标签: java spring-boot java-8

如果application.properties中缺少一个键,我有一个要求初始化另一个键的值。

例如,我有两个键abc和xyz,其中只有一个在application.properties中可以找到。

但是还有另一个实用程序,它将在我的springboot应用程序出现之前将密钥和值写入application.properties。

所以我需要相应地读取按键。

是否可以从application.properties中读取值,例如,如果存在abc,则要读取的abc值,否则为xyz。

但是我需要将这些值读入同一个java变量中,而不管application.properties中是否存在任何键。

任何潜在客户都将受到高度赞赏。

我的代码:

public class Sample {
    public static Integer CONNECT_INACTIVITY_TIME_LIMIT;
    public static Integer MAX_NUM_CONNECTION;       

    @Value("${accessKey.connectionTimeInactivityLimit}")
    public void setConnectTimeLimit(Integer CONNECT_INACTIVE_TIME_LIMIT) {
        Sample.CONNECT_INACTIVITY_TIME_LIMIT = CONNECT_INACTIVE_TIME_LIMIT;
    }

    @Value("${accessKey.maxConnectionNumber}")
    public void setMaxConnectionNumber(Integer MAX_NUM_CONNECTION) {
        Sample.MAX_NUM_CONNECTION = MAX_NUM_CONNECTION;
    }
}

2 个答案:

答案 0 :(得分:1)

您可以这样做:

@Value("${accessKey.connectionTimeInactivityLimit:${accessKey.maxConnectionNumber}}")

如果第一个属性不存在,则将使用第二个属性分配值。

答案 1 :(得分:0)

您可以这样做:

@Autowired
private Environment env;    

@Value("${accessKey.connectionTimeInactivityLimit}")
public void setConnectTimeLimit(Integer CONNECT_INACTIVE_TIME_LIMIT) {
    if (env.getProperty("JaccessKey.maxConnectionNumber") != null) {
       Sample.CONNECT_INACTIVITY_TIME_LIMIT = env.getProperty("JaccessKey.maxConnectionNumber");
    } 
    Sample.CONNECT_INACTIVITY_TIME_LIMIT = CONNECT_INACTIVE_TIME_LIMIT;
}