Spring boot 我如何解析应用程序属性?
我使用inputstream时的当前代码。prop=新属性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
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吗(在你的问题中)