我开发了一个Spring Boot应用程序。此应用程序可以部署到测试或prod环境,应用程序使用REST API发出请求。我使用POJO作为包装器,JsonProperty注释包含API的字段ID,它正被推送到。
即
@JsonProperty("field_001)
private String name;
@JsonProperty("field_002)
private String address;
这些值的字段标签在测试端点上有所不同。因此,测试端点可能希望属性映射为
@JsonProperty("field_005)
private String name;
@JsonProperty("field_006)
private String address;
我希望能够利用Spring Boot原生支持基于配置文件的属性文件。从运行时读取外部属性文件中的JsonProperty注释值。
例如,
可能有三个文件application.properties,application-test.properties和application-prod.properties。除了基于“spring.profiles.active”设置的vanilla属性文件外,Spring Boot还可以读入test或prod属性。
...- test.properties将包含测试服务器字段的常量值。并且......- prod.properties将包含prod服务器字段的常量值。
嵌套注释,例如Spring的@Value标记,如下所示:
@JsonProperty(@Value("${property.file.reference.here}))
doesn't seem to work.
祝你好运
答案 0 :(得分:0)
@JsonProperty(@Value("${property.file.reference.here}))
不会仅仅因为:
@JsonProperty
使用String作为值,但@Value
是'Annotation
',因此它不是String值,编写它会给出以下错误:
错误:(34,12)java:annotation对java.lang.String类型的元素无效
另外,加载弹簧上下文时,@Value
将被“加载”一次。
修改强>
如果您希望使用test / dev和prod属性,最好在测试资源包下创建一个属性文件,它们将自动加载。 (我正是这样使用的。)
实际上还有另一种方法,就是在运行时修改注释值。