我开发了一个Spring应用程序。该应用程序可以部署到测试或prod环境中,应用程序正在使用REST进行请求。我使用POJO作为包装器,使用包含JsonProperty字段is的注释,这些字段is是要推送到的。
即
@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本机支持基于配置文件的属性文件。在运行时从外部属性文件读取JsonProperty注释值。
例如,
可能有三个文件( application.properties、application-test.properties和application-prod.properties )。除了基于"spring.profiles.active“设置的香草属性文件之外,Spring还可以读取测试或prod属性。
属性将包含测试服务器字段的常量值。属性将包含prod服务器字段的常量值。
嵌套注释,如Spring的@Value标记,如下所示:
@JsonProperty(@Value("${property.file.reference.here}))
doesn't seem to work.诚挚的问候
发布于 2016-11-16 16:45:54
@JsonProperty(@Value("${property.file.reference.here}))不能简单地工作,因为:
@JsonProperty使用一个字符串作为值,但是@Value是一个'Annotation',所以这不是一个字符串值,编写它会给您带来以下错误:
错误:(34,12) java:注释对java.lang.String类型的元素无效
另外,当spring上下文加载时,@Value将被加载“一次”。
编辑
如果希望使用test/dev和prod属性,最好在测试资源包下创建属性文件,它们将自动加载。(我就是这么用的)。
实际上还有另一种方法,就是在运行时修改注释值。
https://stackoverflow.com/questions/40637510
复制相似问题