Lesen einer Liste aus der Eigenschaftendatei und Laden mit Spring Annotation @Value
Ähnlich dieser Frage: http://forum.springsource.org/showthread.php?111992-Loading-a-list-from-properties-file-using-Value-annotation (für die es keine Antwort auf)
Ich möchte eine Liste von Werten in einem .properties-Datei, dh:
my.list.of.strings=ABC,CDE,EFG
Und laden es in meiner Klasse direkt, dh:
@Value("${my.list.of.strings}")
private List<String> myList;
So wie ich das verstehe, eine alternative, dies zu tun ist, um es in der spring config-Datei, und laden Sie es als eine bean-Referenz (korrigiert mich wenn ich falsch Liege), dh
<bean name="list">
<list>
<value>ABC</value>
<value>CDE</value>
<value>EFG</value>
</list>
</bean>
Aber gibt es eine Möglichkeit, dies zu tun? mit einem .Eigenschaften-Datei?
ps: ich möchte dies tun, ohne benutzerdefinierten code, wenn möglich.
InformationsquelleAutor der Frage JackDev | 2012-09-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit Spring-EL:
Vorausgesetzt, Ihre properties-Datei geladen wird korrekt mit der folgenden:
InformationsquelleAutor der Antwort Wilhelm Kleu
Seit Spring 3.0, können Sie fügen Sie eine Zeile wie
Ihrem
applicationContext.xml
(oder wo Sie Dinge konfigurieren).Als Dmitry Chornyi betont in einem Kommentar, Java-basierte Konfiguration sieht wie folgt aus:
Diese aktiviert die neue Konfiguration service unterstützt die Konvertierung
String
zuCollection
Arten.Wenn Sie nicht aktivieren Sie diese Konfiguration, service, Frühjahr fällt wieder auf seine alte Eigenschaft Editoren configuration services, die nicht unterstützen diese Art der Umwandlung.
Umstellung auf Sammlungen von anderen Arten funktioniert es auch:
wird die Arbeit mit einer Zeile wie
Keine Probleme mit whitespace es, die
ConversionServiceFactoryBean
kümmert.Sehen http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#core-convert-Spring-config
InformationsquelleAutor der Antwort Clemens Klein-Robbenhaar
Durch Angabe der
my.list.of.strings=ABC,CDE,EFG
.Eigenschaften-Datei und verwenden@Value("${my.list.of.strings}")
private String[] myString;
Können Sie die arrays von strings. Und mit
CollectionUtils.addAll(myList, myString)
Sie können die Liste von strings.InformationsquelleAutor der Antwort Crazy Developer
Haben Sie als
@Autowired
ing Konstruktor oder eine setter-undString.split()
ing im Körper?Tendiere ich lieber tun, mein autowiring in eine dieser Möglichkeiten zur Verbesserung der Testbarkeit meines Codes.
InformationsquelleAutor der Antwort nicholas.hauschild
Alle oben genannten Antworten sind richtig. Aber dies können Sie erreichen, in nur einer Zeile.
Bitte versuchen Sie die folgenden Erklärung an und Sie bekommen alle die kommagetrennte Werte in eine String-Liste.
Und auch Sie müssen die folgende Zeile definiert in der xml-Konfiguration.
nur ersetzen Sie den Pfad und den Dateinamen der Datei Eigenschaften. Und Sie sind gut zu gehen. 🙂
Hoffe, dies hilft Ihnen. Cheers.
InformationsquelleAutor der Antwort Japan Trivedi
Wenn Sie dies Lesen, und Sie sind mit Spring BootSie haben 1 weitere option für diese Funktion
In der Regel durch Komma getrennte Liste sind sehr ungeschickt für die Reale Welt verwenden Fall
(Und irgendwann gar nicht machbar, wenn Sie möchten, verwenden Sie Kommas in deiner config):
Mit Spring BootSie können es schreiben wie dieser (Index bei 0 beginnen):
Und verwenden Sie es wie diese:
InformationsquelleAutor der Antwort Ng Sek Long
dazu können Sie mit Anmerkungen wie dieser
hier meine.Liste..strings ausgewählt werden aus der properties-Datei, wenn nicht dort, dann die Standardeinstellungen, a,b,c verwendet werden
- und in deiner properties-Datei, können Sie etwas haben, wie diese
meine.Liste..strings=d,e,f
InformationsquelleAutor der Antwort verma
Überlegen mit Commons Configuration. Es haben eingebaute feature zu brechen, der Eintrag in der properties Datei in ein array/Liste. Kämmen mit SpEL und @Wert sollte geben, was Sie wollen
Wie gewünscht, hier ist was Sie brauchen (Habe nicht wirklich versucht, den code, möglicherweise habe einige typoes, bitte Geduld mit mir):
In Apache Commons Configuration, dort ist PropertiesConfiguration. Es unterstützt die Funktion der Umwandlung von getrennten string zu array/Liste.
Zum Beispiel, wenn Sie eine Eigenschaften-Datei
Mit dem folgenden code:
geben Sie ein string-array von
["bar1", "bar2", "bar3"]
Verwenden mit Feder, diese in Ihrem app-Kontext-xml:
haben und diese in spring-bean:
Ich glaube, das sollte funktionieren 😛
InformationsquelleAutor der Antwort Adrian Shum
Vorsicht vor Leerzeichen in den Werten. Ich könnte falsch sein, aber ich denke, dass Räume, in die Komma-getrennte Liste nicht abgeschnitten werden, mit der @Wert und Spel. Die Liste
würde gelesen werden als eine Liste von strings
In den meisten Fällen würden Sie wahrscheinlich nicht wollen, dass die Räume!
Den Ausdruck
geben Ihnen eine Liste von strings:
Den regulären Ausdruck entfernt alle Leerzeichen vor und nach einem Komma. Leerzeichen innerhalb der Werte werden nicht entfernt. So
führen sollten Werte
InformationsquelleAutor der Antwort DAMungra
wenn mit Eigentum Platzhalter dann ser1702544 Beispiel würde
Mit Platzhalter xml:
InformationsquelleAutor der Antwort cgull