2016-04-01 3 views
1

Ich habe eine Analyse eines Legacy-Codes (es ist Spring-Anwendung) und fand sowohl PropertySourcesPlaceholderConfigurer und PropertyPlaceholderConfigurer im Frühjahr Kontext initialisiert. Ich weiß, dass nur eine Instanz von PropertyPlaceholderConfigurer im Spring-Kontext existieren sollte. Meine Frage ist, ob diese Regel für PropertySourcesPlaceholderConfigurer und PropertyPlaceholderConfigurer gilt. Ist es ein Fehler, beide in einen Zusammenhang zu bringen?PropertySourcesPlaceholderConfigurer und PropertyPlaceholderConfigurer

Antwort

2

Mehrere Eigenschaftskonfigurationen können registriert werden. Aber wenn sich beide PlaceholderConfigurer auf denselben Satz von Eigenschaften beziehen, dann ist dies eine Fehlkonfiguration und sollte vermieden werden.

Andernfalls ist es bei der Registrierung mehrerer PlaceholderConfigurer wichtig, dass die Reihenfolge der Bean korrekt angegeben wird. So kann der Frühling die richtigen Werte für die Platzhalter auflösen.

Hier finden Sie eine gute Lektüre.

Spring Properties

+0

Danke für die Antwort. Eigentlich mein Problem mit Autowiring (@Value) im Frühjahr Web-Anwendung (Feder-MVC). Ich habe Property-Datei und zwei PPCs (in der Frage erwähnt) im übergeordneten Kontext. In meinem Child-Kontext kann ich die Eigenschaft jedoch nicht mit (@Value) autowire und ich dachte, das Problem liege darin. Ich habe ein anderes PPC im Kindkontext definiert, aber ich wollte PPC wiederverwenden, das im Elternkontext definiert wurde. In Ihrer Referenz (Punkt 8) wird die Abhängigkeit zwischen Kind-Eltern-Kontext beschrieben. Allerdings habe ich einen Defekt gefunden, der beschreibt, warum dies geschieht https://jira.spring.io/browse/SPR-8994 – mvb13

0

PropertySourcesPlaceholderConfigurer ist flexibler durch die Vorteile der Umwelt und PropertySource Mechanismen nehmen auch im Frühjahr 3.1 zur Verfügung gestellt.

PropertyPlaceholderConfigurer ist immer noch geeignet für den Einsatz bei der:

  1. die Feder-Kontextmodul nicht verfügbar ist (das heißt, man verwendet Spring BeanFactory API, wie zum Applicationgegen).
  2. Die vorhandene Konfiguration verwendet die Eigenschaften "systemPropertiesMode" und/oder "systemPropertiesModeName". Benutzer werden ermutigt, diese Einstellungen nicht mehr zu verwenden und stattdessen die Suchreihenfolge für die Eigenschaftenquelle über die Umgebung des Containers zu konfigurieren. Die genaue Funktionalität kann jedoch beibehalten werden, indem weiterhin PropertyPlaceholderConfigurer verwendet wird.

PropertySourcesPlaceholderConfigurer Diese Klasse wird als allgemeiner Ersatz für PropertyPlaceholderConfigurer in Spring 3.1-Anwendungen. Es wird standardmäßig verwendet, um das property-placeholder -Element bei der Arbeit mit der Spring-Kontext-3.1-XSD zu unterstützen, während die Spring-context-Versionen < = 3.0 standardmäßig PropertyPlaceholderConfigurer verwenden, um Abwärtskompatibilität zu gewährleisten.

Verwandte Themen