外部ソースからアノテーション付き Spring Bean にプロパティを注入するにはどうすればよいですか?

DDD
リリース: 2024-11-13 14:01:02
オリジナル
546 人が閲覧しました

How to Inject Properties from External Sources into Annotated Spring Beans?

アノテーション付き Spring Bean への外部プロパティの注入

アノテーションを通じて Spring Bean を構成する場合、外部ソースからプロパティ値を注入する必要があります。この記事では、アノテーションを使用して構成された Bean にプロパティ値を注入する方法について説明します。

提供されたコードは、Spring XML ファイルで明示的に定義せずに、アノテーションによって構成された Spring Bean の PersonDaoImpl を示しています。ただし、app.properties からこの Bean にプロパティを挿入する必要があります。

従来、これは XML ファイルでプロパティを定義し、PropertyPlaceholderConfigurer を使用して外部ファイルから値を読み取ることで実現されていました。ただし、Bean がアノテーションを通じて定義されているため、このアプローチは不可能です。

これに対処するために、Spring は Spring 3 の EL サポートを使用したソリューションを提供しています。次のコードはそのアイデアを示しています。

@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {

    @Value("#{systemProperties.databaseName}")
    public void setDatabaseName(String dbName) { ... }
}
ログイン後にコピー

この例では、systemProperties はシステム プロパティへのアクセスを許可する暗黙的なオブジェクトです。次に、dbName にシステム プロパティの値、databaseName が注入されます。

同様に、EL 式を使用して他の Bean を注入できます。例:

@Value("#{strategyBean.databaseKeyGenerator}")
public void setKeyGenerator(KeyGenerator kg) { ... }
ログイン後にコピー

ここでは、strategyBean は Spring Bean であると想定され、その databaseKeyGenerator プロパティが現在の Bean に注入されます。

Spring では、プロパティを Spring Bean から注入することもできます。 Properties オブジェクト:

@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;
ログイン後にコピー

この例では、myProperties オブジェクトのプロパティが注入されます。フィールド githubOauthClientId.

以上が外部ソースからアノテーション付き Spring Bean にプロパティを注入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート