B.1.2. Property Attributes
附录B.1.2. Property属性
properties
数组中包含的JSON对象可以包含以下属性:
名称 | 类型 | 目的 |
---|---|---|
name | String | property的全名,格式为小写句点分割的形式(比如server.servlet.path )。该属性是强制性的 |
type | String | property数据类型的完整的签名。例如java.lang.String ,但也可以是一个完整的泛型类,比如java.util.Map<java.util.String,acme.MyEnum> 。该属性可以用来指导用户他们可以输入值的类型。为了保持一致,原生类型使用它们的包装类代替,比如boolean 变成了java.lang.Boolean 。注意,这个类可能是个从一个字符串转换而来的复杂类型。如果类型未知则该属性会被忽略 |
description | String | 一个简短的组的描述,用于展示给用户。如果没有描述可用则该属性会被省略。推荐使用一个简短的段落描述,开头提供一个简要的总结,最后一行以句号(. )结束 |
sourceType | String | 贡献property的来源类名。例如,如果property来自一个被@ConfigurationProperties 注解的类,该属性将包括该类的全限定名。如果来源类型未知则该属性会被忽略 |
defaultValue | Object | 当property没有定义时使用的默认值。如果property类型是个数组则该属性也可以是个数组。如果默认值未知则该属性会被忽略 |
deprecated | Deprecation | 指定该property是否弃用。如果该字段没有弃用或该信息未知则该属性会被忽略。下表提供了关于deprecation 属性的更多详细信息 |
每一个properties
元素的deprecation
属性包含的JSON对象可以包含如下的属性:
名称 | 类型 | 目的 |
---|---|---|
level | String | 弃用的级别,可以是warning (默认)或者error 。当一个属性有warning 弃用级别,它应当还是会被绑定在环境里。但是,当它有一个error 启用级别,这个属性就不再被管理,也不再被绑定。 |
reason | String | 对这个属性被弃用的原因的简短描述。没有原因则可能会被省略。推荐使用一个简短的段落描述,开头提供一个简要的总结,最后一行以句号(. )结束 |
replacement | String | 属性的全名,代替弃用的属性。如果没有代替的属性则会被省略 |
注 在Spring Boot 1.3之前,单个的deprecated
布尔属性可以用来代替deprecation
元素。在弃用的方式里,这仍旧被支持,但是不应当再被使用。如果没有可用的reason和replacement,一个空的deprecation
对象应当被设置。
Deprecation也可以通过在暴露deprecated属性的getter方法上,添加@DeprecatedConfigurationProperty
标注的方式,在代码中声明式地指定。比如,让我们假设app.acme.target
属性令人困惑,被重命名成了app.acme.name
。下面的例子展示了如何处理这种情况:
@ConfigurationProperties("app.acme")
public class AcmeProperties {
private String name;
public String getName() { ... }
public void setName(String name) { ... }
@DeprecatedConfigurationProperty(replacement = "app.acme.name")
@Deprecated
public String getTarget() {
return getName();
}
@Deprecated
public void setTarget(String target) {
setName(target);
}
}
注 没有办法设置level
,因为代码还在处理这个属性,所以一直是warning
。
上面的代码确保了弃用的属性依旧工作(在幕后委托给name
属性)。一旦getTarget
和setTarget
方法可以从你的公共API移除,元数据里的自动的弃用提示也会一同消失。如果你想要保持提示,用error
弃用级别添加手工的元数据,保证用户仍旧会收到关于那个属性的通知。当提供了replacement
的时候,这会特别有用。