是否可以在 Spring 的 @Value 注释中将键作为默认值传递
Is it possible to pass a key as default value in @Value annotation of Spring
我有这样一种情况,我们正在从属性文件中读取一个 属性,现在我们被要求指向另一个端点,一段时间以来我们必须管理这两个端点,除非这个新端点经过测试并彻底验证。
我想通过在属性文件中添加这个较新的 属性 来处理这种情况,而在实际的 class 中,我们正在阅读带有 @Value
注释的 属性旧的可以作为默认值传递,其键作为值类似于
@Value("${backend.endpoint:${older.endpoint}}")
。可能吗?
你可以这样使用它。 (本人没做过,如有错误请见谅)
@Configuration
public class PropertyConfiguration {
@Value("{'${backend.endpoint:${older.endpoint:}}'}")
private String myValue;
}
这个@Value
注解使用backend.endpoint
,如果提供的话默认为older.endpoint
,如果没有提供backend.endpoint
。
如果两者都没有提供,则 属性 必须设置为 null
.
还有其他方法可以解决这个问题。可能,在代码中对 属性 和 handle 使用 @Value
。
可以的,我已经测试过了,我的示例代码
代码:
@Value("#{ ${spring.myapp.usenewval} ? '${spring.myapp.newval}' : '${spring.myapp.oldval}}'}")
private String message;
属性
spring:
myapp:
usenewval: false
newval: hello
oldval: world.....
您始终可以像
一样从外部设置 spring.myapp.usenewval
java -jar -Dspring.myapp.usenewval=true myapp.jar
这是为您快速解决的问题。请参考。
您可以将默认值设置为 @spring 的值注释,如下所示。
@Controller
@RequestMapping(value = "/your path")
public class MyController {
@Value("${key:true}")
private boolean booleanWithDefaultValue;
}
在这里,我使用布尔变量并将默认值设置为"true"。
希望这个解决方案有效。
我有这样一种情况,我们正在从属性文件中读取一个 属性,现在我们被要求指向另一个端点,一段时间以来我们必须管理这两个端点,除非这个新端点经过测试并彻底验证。
我想通过在属性文件中添加这个较新的 属性 来处理这种情况,而在实际的 class 中,我们正在阅读带有 @Value
注释的 属性旧的可以作为默认值传递,其键作为值类似于
@Value("${backend.endpoint:${older.endpoint}}")
。可能吗?
你可以这样使用它。 (本人没做过,如有错误请见谅)
@Configuration
public class PropertyConfiguration {
@Value("{'${backend.endpoint:${older.endpoint:}}'}")
private String myValue;
}
这个@Value
注解使用backend.endpoint
,如果提供的话默认为older.endpoint
,如果没有提供backend.endpoint
。
如果两者都没有提供,则 属性 必须设置为 null
.
还有其他方法可以解决这个问题。可能,在代码中对 属性 和 handle 使用 @Value
。
可以的,我已经测试过了,我的示例代码
代码:
@Value("#{ ${spring.myapp.usenewval} ? '${spring.myapp.newval}' : '${spring.myapp.oldval}}'}")
private String message;
属性
spring:
myapp:
usenewval: false
newval: hello
oldval: world.....
您始终可以像
一样从外部设置 spring.myapp.usenewvaljava -jar -Dspring.myapp.usenewval=true myapp.jar
这是为您快速解决的问题。请参考。
您可以将默认值设置为 @spring 的值注释,如下所示。
@Controller
@RequestMapping(value = "/your path")
public class MyController {
@Value("${key:true}")
private boolean booleanWithDefaultValue;
}
在这里,我使用布尔变量并将默认值设置为"true"。
希望这个解决方案有效。