首頁 > Java > java教程 > 如何將外部來源的屬性注入到已註解的 Spring Bean 中?

如何將外部來源的屬性注入到已註解的 Spring Bean 中?

DDD
發布: 2024-11-13 14:01:02
原創
619 人瀏覽過

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

將外部屬性注入已註解的 Spring Bean

透過註解配置 Spring bean 時,需要從外部來源注入屬性值。本文解決如何將屬性值注入到使用註解配置的 bean 中的問題。

提供的程式碼顯示了一個 Spring bean,PersonDaoImpl,透過註解配置,而在 Spring XML 檔案中沒有明確定義。但是,需要將 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 是一個允許存取系統屬性的隱式物件。然後用系統屬性databaseName的值注入dbName。

類似地,可以使用EL表達式註入其他bean。例如:

@Value("#{strategyBean.databaseKeyGenerator}")
public void setKeyGenerator(KeyGenerator kg) { ... }
登入後複製

這裡假設strategyBean是一個Spring bean,它的databaseKeyGenerator屬性將被注入到目前bean。

Spring也允許從一個bean注入屬性。 Properties 物件:

@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;
登入後複製

在此範例中,myProperties 物件中的屬性被注入到欄位中githubOauthClientId。

以上是如何將外部來源的屬性注入到已註解的 Spring Bean 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板