我该如何解析。浮动一个应用程序属性?

时间:2016-11-04 14:34:12

标签: spring-boot

我使用inputstream时的当前代码。 prop = new properties;

 Application = prop.getProperty("Application");
 servers = prop.getProperty("SERVERS");
 username = prop.getProperty("USER_NAME");
 password = prop.getProperty("PASSWORD");
Float criticalThreshold = Float.parseFloat(prop.getProperty("THRESHOLD_CRITICAL"));
Float badThreshold = Float.parseFloat(prop.getProperty("THRESHOLD_BAD"));   

我最近使用spring boots方式将我的应用程序属性实现到我的java类中。

@Value("${Application}")
private String Application;
@Value("${SERVERS}")
private String servers; 
@Value("${USER_NAME}")
private String username;
@Value("${PASSWORD}")
private String password;

但我不知道如何重写Float.parseFloat

    Float criticalThreshold = Float.parseFloat(prop.getProperty("THRESHOLD_CRITICAL"));
Float badThreshold = Float.parseFloat(prop.getProperty("THRESHOLD_BAD"));

我试过但它会自动给我一个编译错误。

@Value("${THRESHOLD_CRITICAL}")
    private Float criticalThreshold;
@Value("${THRESHOLD_BAD}")
    private Float badThreshold;

2 个答案:

答案 0 :(得分:2)

您可以参考Alex建议的解决方案,因为它不需要额外的变量,如下面的方法。

您无法直接执行此操作,但您可以实现@PostConstruct并再声明一个变量criticalThresholdFloatValue,如下所示:

@Value("${THRESHOLD_CRITICAL}")
private String criticalThreshold;

private float criticalThresholdFloatValue;

@PostConstruct
public void init() {
    criticalThresholdFloatValue = Float.parseFloat(criticalThreshold);
}

现在,您可以开始在bean方法中使用criticalThresholdFloatValue

答案 1 :(得分:2)

@Value允许您指定要调用以更改注入属性的方法:

@Value("#{T(java.lang.Float).parseFloat('${THRESHOLD_CRITICAL}')}")
private float criticalThreshold;

我测试了它,它也没有完整的包名称:

@Value("#{T(Float).parseFloat('${THRESHOLD_CRITICAL}')}")
private float criticalThreshold;