gpt4 book ai didi

java - 当属性不存在或等于 0 时默认值的 SpEL (Spring) 语法

转载 作者:行者123 更新时间:2023-12-02 01:45:02 25 4
gpt4 key购买 nike

如果 Integer 属性不存在或者其当前值为 0,并且我无法使 0 比较正常工作,则我尝试将其设置为默认值 1。

原始值(如果设置)将通过命令行输入。

以下是我类(class)中的相关行:

@Configuration
public class AppConfig {

@Value("${${instance.procmultiplier} == 0 ? Integer.parseInt('1') : ${instance.procmultiplier}}")
public Integer procMultiplier;
}

我尝试了 @Value 注释的多种变体,在某一时刻,我发誓它识别了 0 值,但我无法回到该状态。我首先尝试简单地让它识别 0 值并默认为 1,然后我将尝试插入空检查。

有没有办法在同一个注释中同时完成这两项操作?我的一个想法是将空检查和 0 检查分成两个不同的属性,基本上在属性文件中包含 procmultiplier=${instance.procmultiplier:1} ,然后将注释更改为 @Value("${${procmultiplier} == 0 ? Integer.parseInt('1') : ${procmultiplier}}") 但我尝试的任何方法都不起作用。

我的命令是:mvn clean package && java -Dspring.profiles.active=json -Dinstance.procmultiplier=0 -jar target/MyApp-0.0.1-SNAPSHOT.jar

该属性最终等于我在命令行上设置的值。

关于如何检查不存在和 0 的任何想法,如果其中一个为真,则默认为 1,否则设置为通过命令行输入的任何内容?

最佳答案

看来我的问题是使用 ${...} 而不是 #{...}。这是我使用两个不同属性的解决方案:

bootstrap.properties

procmultiplier=${instance.procmultiplier:1}

AppConfig.java

@Configuration
public class AppConfig {

@Value("#{${procmultiplier} == 0 ? 1 : ${procmultiplier}}")
public Integer procMultiplier;
}

命令行:mvn clean package && java -Dspring.profiles.active=json -Dinstance.procmultiplier=0 -jar target/MyApp-0.0.1-SNAPSHOT.jar

还允许缺少 instance.procmultiplier 参数。

尽管如此,我仍然不知道如何用 1 个属性一次性完成所有操作...

关于java - 当属性不存在或等于 0 时默认值的 SpEL (Spring) 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53820716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com