SpELを使用したSpring @Valueアノテーションで興味深い問題があります。デフォルト値のnullを設定すると、String変数に対して機能します。しかし、Set変数の場合はそうではありません。java.util.Set変数のSpring @Valueでデフォルト値をnullに設定します
だから、この作品(varStrはnullである):
@Value("${var.string:#{NULL}}")
private String varStr;
、これはそうではない(varSetは今 "#{NULL}" で一つの要素が含まれています):
@Value("#{'${var.set:#{NULL}}'.split(',')}")
private Set<String> varSet;
質問これをSet変数でも動作させる方法です。デフォルトではnullに設定されています。
お手数をおかけします。
このように注入された依存性を 'null'にデフォルト設定したいのは非常に奇妙なようです。 – Makoto
これは非常に奇妙なことだと私は同意しますが、なぜこの表現を引用符で '' $ {var.set:#{NULL}} ''と書かれたのでしょうか? – Andremoniy
私は個人的にフィールドインジェクションを使用せず、常にコンストラクタインジェクションを使用します。このように、本当に必要な場合は、コンストラクタでフィールド値を 'null'に設定することができます。 – Brad