Heim >Java >javaLernprogramm >Wie kann ich Eigenschaftswerte in Beans einfügen, die in Spring mit Annotationen konfiguriert wurden?

Wie kann ich Eigenschaftswerte in Beans einfügen, die in Spring mit Annotationen konfiguriert wurden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-09 05:06:02546Durchsuche

How Can I Inject Property Values into Beans Configured with Annotations in Spring?

Eigenschaftsinjektion in Beans, die mithilfe von Annotationen in Spring konfiguriert wurden

In Spring werden Beans häufig mithilfe von Annotationen konfiguriert, um die Abhängigkeitsinjektion und das Scannen von Klassenpfaden zu vereinfachen. Wenn Sie jedoch Eigenschaftswerte aus einer externen Quelle wie einer Eigenschaftendatei einfügen müssen, kann es zu Herausforderungen kommen.

Problemstellung

Stellen Sie sich eine Java-Klasse vor, die als Spring Bean annotiert ist:

@Repository("personDao")
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
    // Implementation omitted
}

Diese Bean wird über Annotationen konfiguriert und Sie möchten einen Eigenschaftswert aus einer app.properties-Datei in sie einfügen. Da die Bean jedoch nicht in der Spring-XML-Datei deklariert ist, ist die übliche Der Elementansatz kann nicht verwendet werden.

Eigenschaftsinjektion mit EL-Unterstützung

Spring bietet EL-Unterstützung (Expression Language), die die Eigenschaftsinjektion direkt in annotierte Beans ermöglicht. Gehen Sie dazu wie folgt vor:

  1. Fügen Sie die folgende Abhängigkeit zur pom.xml Ihres Projekts hinzu:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.23</version>
</dependency>
  1. Verwenden Sie die @Value-Annotation, um den Eigenschaftswert einzufügen:
public class PersonDaoImpl extends AbstractDaoImpl implements PersonDao {
    @Value("${results.max}")
    private int maxResults;
    // Implementation omitted
}

Beispiel für das Einfügen einer Eigenschaft aus einem Properties-Objekt

Sie können @Value auch verwenden, um Eigenschaften aus einem Properties-Objekt einzufügen:

@Autowired
private Properties myProperties;
@Value("#{myProperties['github.oauth.clientId']}")
private String githubOauthClientId;

Zusätzliche Informationen

  • Das systemProperties-Objekt bietet Zugriff auf Systemeigenschaften.
  • @Value kann auch auf Felder zur direkten Injektion angewendet werden.
  • Weitere Einzelheiten finden Sie in diesem Blog Beitrag: [Property Injection im Frühjahr mit @Value und EL-Unterstützung](https://www.baeldung.com/spring-property-injection-value).

Das obige ist der detaillierte Inhalt vonWie kann ich Eigenschaftswerte in Beans einfügen, die in Spring mit Annotationen konfiguriert wurden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn