Spring boot 我如何解析应用程序属性?

Spring boot 我如何解析应用程序属性?,spring-boot,Spring Boot,我使用inputstream时的当前代码。prop=新属性 Application = prop.getProperty("Application"); servers = prop.getProperty("SERVERS"); username = prop.getProperty("USER_NAME"); password = prop.getProperty("PASSWORD"); Float criticalThreshold = Float.parseFloat(prop

我使用inputstream时的当前代码。prop=新属性

 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"));   
我最近用SpringBoots的方式将我的应用程序属性实现到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;

您可以参考Alex建议的解决方案,因为它不需要以下方法中的附加变量。

您不能直接这样做,但您可以实现
@PostConstruct
并声明另一个变量
criticalThresholdFloatValue
,如下所示:

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

private float criticalThresholdFloatValue;

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

现在,您可以在bean方法中使用的任何地方开始使用
criticalThresholdFloatValue

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

@Value("#{T(java.lang.Float).parseFloat('${THRESHOLD_CRITICAL}')}")
private float criticalThreshold;
我对它进行了测试,它也可以在没有完整包名的情况下工作:

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

是否可以像本例中那样对setter方法进行注释?Joe:我不知道怎么做,但是我上面的方法是可行的,但是需要额外的var。对不起,修复了它(需要指定整个包),加上了Tseems作为前缀,这是一种很好的方法,但是仍然在调试,在这里不起作用。。。这两种方法对我都有效。你能给我看一下你的stacktrace吗?原因是:java.lang.IllegalArgumentException:无法解析字符串值“#{T(Float).parseFloat('${THRESHOLD\u CRITICAL}')}”中的占位符“THRESHOLD\u CRITICAL”,你能显示你的application.properties吗(在你的问题中)