2

我知道在 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;
  }
}

值的长度需要针对不同的环境进行配置,但我似乎无法弄清楚在已经存在的界面中可以配置一些东西。甚至可能吗?

4

0 回答 0