透過註解配置 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中文網其他相關文章!