アノテーションを通じて 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 サイトの他の関連記事を参照してください。