[解決済み] [Solved] アノテーションを使用して構成されたSpring Beanにプロパティ値を注入するにはどうすればよいですか?
2022-03-29 15:59:34
質問
私は、アノテーションを介してクラスパスからピックアップされたSpring Beanの束を持っている、例えば、。
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
// Implementation omitted
}
SpringのXMLファイルには PropertyPlaceholderConfigurer が定義されています。
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/app.properties" />
</bean>
app.properitesのプロパティの1つを、上記のビーンに注入したいのです。私は単に次のようなことを行うことはできません。
<bean class="com.example.PersonDaoImpl">
<property name="maxResults" value="${results.max}"/>
</bean>
PersonDaoImplはSpring XMLファイルには存在しないため(アノテーションでクラスパスから拾ってくる)。というところまではできました。
@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
@Resource(name = "propertyConfigurer")
protected void setProperties(PropertyPlaceholderConfigurer ppc) {
// Now how do I access results.max?
}
}
しかし、私が興味を持っているプロパティに、どうやって
ppc
?
解決方法は?
Spring 3ではELのサポートを使って行うことができます。例を挙げます。
@Value("#{systemProperties.databaseName}")
public void setDatabaseName(String dbName) { ... }
@Value("#{strategyBean.databaseKeyGenerator}")
public void setKeyGenerator(KeyGenerator kg) { ... }
systemProperties
は暗黙のオブジェクトであり
strategyBean
はビーン名です。
もう1つ例を挙げると、これはプロパティを
Properties
オブジェクトを作成します。また
@Value
をフィールドに追加します。
@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;
以下は ブログ記事 このことについて書いたので、もう少し詳しく。
関連
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] Application startメソッドで例外が発生する。JavaFx 11
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
-
[解決済み] Spring Frameworkの@Injectと@Autowiredの違いは何ですか?どのような条件でどちらを使うか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] HashMapのtoString関数はなぜ異なる順序で自分自身を印刷するのですか?
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] JOGLまたはLWJGLの既成のプロジェクト
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました