我知道在 Spring 中可以从属性文件中绑定一些值,如下所示:
class Foo {
@Value("${some.config.property}")
String value;
...
}
在我正在为他们工作的当前项目中,他们热衷于使用不可变库。
他们有一个不可变的“类”,需要一些可配置属性的验证。一个例子:
@Value.Immutable
public interface Foo extends Bar {
...
String getValue();
@Value.Check
default void validate() {
Preconditions.checkArgument(getValue().length() <= 2000, //<-- this should be a configurable value
"Value may not contain more than 2000 characters.");
}
}
这将生成一些不可变的样式类,例如:
@Generated({"Immutables.generator", "Foo"})
public final class ImmutableFoo implements Foo {
private final String value;
private ImmutableFoo(String value) {
this.value = value;
}
private static ImmutableFoo validate(ImmutableFoo instance) {
instance.validate();
return instance;
}
}
值的长度需要针对不同的环境进行配置,但我似乎无法弄清楚在已经存在的界面中可以配置一些东西。甚至可能吗?