1. ホーム
  2. spring

[解決済み] Spring Expression Language (SpEL) と @Value: ドル vs. ハッシュ ($ vs. #)

2022-06-12 17:04:27

質問

を使用するタイミングについて、少し混乱しています。 ${...} と比較して #{...} . Springのドキュメントでは #{...} を使う例はたくさんありますが ${...} . さらに、私がSpELを使い始めたころは、SpELを使うには ${...} を使うように言われましたが、問題なく使えます。

混乱している人のために、私の使い方の例を挙げますと

@Component
public class ProxyConfiguration {

    @Value("${proxy.host}")
    private String host;
    @Value("${proxy.port}")
    private String port;

    :
}

とプロパティファイルがあります。

proxy.host=myproxy.host
proxy.port=8000

私の質問です。

  • はどのような違いがあるのでしょうか、それとも同じなのでしょうか?
  • 一方のバージョンは非推奨なので、もう一方を使うべきですか?

どのように解決するのですか?

${...} はプロパティのプレースホルダーの構文です。これはプロパティを参照するためにのみ使用できます。

#{...} SpEL構文 であり、これははるかに高機能で複雑です。また、プロパティのプレースホルダを扱うことができ、さらに多くのことを行うことができます。

どちらも有効であり、どちらも非推奨ではありません。