首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带有弹簧引导的Jackson的动态JsonProperty

使用带有弹簧引导的Jackson的动态JsonProperty
EN

Stack Overflow用户
提问于 2016-11-16 16:39:56
回答 1查看 4.2K关注 0票数 1

我开发了一个Spring应用程序。该应用程序可以部署到测试或prod环境中,应用程序正在使用REST进行请求。我使用POJO作为包装器,使用包含JsonProperty字段is的注释,这些字段is是要推送到的。

代码语言:javascript
复制
@JsonProperty("field_001)
private String name;

@JsonProperty("field_002)
private String address;

这些值的字段标签在测试端点上有所不同。因此,测试端点可能希望将属性映射为

代码语言:javascript
复制
@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标记,如下所示:

代码语言:javascript
复制
@JsonProperty(@Value("${property.file.reference.here})) 
doesn't seem to work.

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 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属性,最好在测试资源包下创建属性文件,它们将自动加载。(我就是这么用的)。

实际上还有另一种方法,就是在运行时修改注释值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40637510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档