「定数」クラス/インターフェースを作成することは広く使用されているアプローチですが、それには欠陥のあるアプローチだと思います。システム内のさまざまなレイヤーのクラスが 1 つの定数クラスに依存して突然開始されるという奇妙な結合が作成されます。また、定数クラスを見ると、どの定数が誰によって使用されているのかがわかりにくくなります。抽象化を完全に嘲笑しているという事実は言うまでもありません。jspに表示するエラーメッセージ、サードパーティAPIのユーザー名とパスワード、スレッドプールサイズなどに関する情報を含む定数クラスが突然あります..すべてが1つの「すべてを知っている」クラスにあります。
そのため、定数クラス/インターフェイスはできるだけ避けてください。コントローラー/サービスを見て、特定のサービス クラスがプロパティ ファイルで公開したい特定の構成値を必要とする場合は、それをクラスに注入し、インスタンス レベルの定数として格納します。この設計は、抽象化の観点からははるかにクリーンであり、このクラスを簡単に単体テストするのにも役立ちます。
Spring では、次のようにプロパティ ファイルへのハンドルを作成できます。
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:my-application.properties" />
</bean>
コードが示すように、ここで複数のプロパティ ファイルを指定できます。これを行った後、次のように、コンテキスト内の他の場所で、前述のプロパティ ファイルからキーを参照できます。
<bean id="xx" class="com.xx.SomeClass" p:imageUrl="${categories.images}"/>
ここのSomeClass
インスタンスには、 というプロパティがあり、これには、 というプロパティ ファイルのキーimageUrl
に対して指定された値が注入されます。categories.images
my-application.properties
お役に立てれば。