Beim Konfigurieren von Spring Beans durch Annotationen ist es notwendig, Eigenschaftswerte aus externen Quellen einzufügen. In diesem Artikel geht es um die Frage, wie ein Eigenschaftswert in eine Bean eingefügt werden kann, die mithilfe von Annotationen konfiguriert wurde.
Der bereitgestellte Code zeigt eine Spring-Bean, PersonDaoImpl, die durch Annotationen ohne explizite Definition in der Spring-XML-Datei konfiguriert wurde. Es besteht jedoch die Notwendigkeit, eine Eigenschaft aus app.properties in diese Bean einzufügen.
Traditionell würde dies dadurch erreicht, dass die Eigenschaft in der XML-Datei definiert und ein PropertyPlaceholderConfigurer verwendet wird, um den Wert aus der externen Datei zu lesen. Da die Bean jedoch durch Annotationen definiert wird, ist dieser Ansatz nicht möglich.
Um dieses Problem zu beheben, bietet Spring in Spring 3 eine Lösung mit EL-Unterstützung an. Der folgende Code veranschaulicht die Idee:
@Repository("personDao") public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao { @Value("#{systemProperties.databaseName}") public void setDatabaseName(String dbName) { ... } }
In diesem Beispiel ist systemProperties ein implizites Objekt, das den Zugriff auf Systemeigenschaften ermöglicht. dbName wird dann mit dem Wert der Systemeigenschaft „databaseName“ injiziert.
Ähnlich können andere Beans mithilfe von EL-Ausdrücken injiziert werden. Zum Beispiel:
@Value("#{strategyBean.databaseKeyGenerator}") public void setKeyGenerator(KeyGenerator kg) { ... }
Hier wird davon ausgegangen, dass strategyBean eine Spring-Bean ist und ihre Eigenschaft „databaseKeyGenerator“ in die aktuelle Bean eingefügt wird.
Spring ermöglicht auch die Einfügung von Eigenschaften aus einer Properties-Objekt:
@Value("#{myProperties['github.oauth.clientId']}") private String githubOauthClientId;
In diesem Beispiel wird eine Eigenschaft aus dem myProperties-Objekt in das Feld eingefügt githubOauthClientId.
Das obige ist der detaillierte Inhalt vonWie fügt man Eigenschaften aus externen Quellen in annotierte Spring Beans ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!