【发布时间】:2016-12-30 15:36:54
【问题描述】:
有没有办法在 spring 中从外部属性文件中读取文本而不使用 @Value 注释。例如:application.properties
var.foo="hello"
我可以使用
将它注入到 spring bean 中@Value("${var.foo}") String value;
作为类变量。有没有办法在不使用 @Value 注释的情况下包含此属性。类似于 JSR bean 验证的方式。
@NotNull(message={custom.notnull})
并且您在 ValidationMessages.properties 文件中将该属性值外部化。
例如,如果我有一个资源(Web 组件)类,并且我必须使用 Swagger 注释来记录它们,
@controller
@path("/")
@Api(description = "User Resource API")
public class UserResource {
@Path("/users")
@GET
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "returns user details", notes = "some notes")
public User getUser() {
return new User(123, "Joe", "Montana");
}
}
和模型,
@ApiModel("user model")
public class User {
@ApiModelProperty(value = "This represents user id")
private String id;
private String firstName;
private String lastName;
...
}
如何将此字符串/句子/消息外部化到外部属性文件。我认为这适用于一般的 Java 注释和 spring,而不是特定于 Swagger。我指定 Swagger 的原因是,如果就像休眠验证 Java 库可以选择在外部 ValidationMessages.properties 文件中指定这些消息,并且 spring 知道默认情况下会选择它(或者可以配置)。
Swagger 是否提供这样的选项?如果没有,我该如何设置?
根本问题是,我不想让我的代码/逻辑与文档相关数据(元数据)混为一谈。
【问题讨论】:
-
您需要提供有关您的用例的更多详细信息,说明您为什么不能或不想使用
@Value注释。 Spring 的另一个领域围绕 i18n 支持,它使用 messages.properties 允许某些领域利用特定语言文本的标记替换。 -
嗨@shawn.. 感谢您的回复。让我编辑这个问题
标签: java spring properties spring-boot annotations