Ich lade Eigenschaftenattribute .properties
mit Spring wie folgt aus einer Datei:
file: elements.properties
base.module.elementToSearch=1
base.module.elementToSearch=2
base.module.elementToSearch=3
base.module.elementToSearch=4
base.module.elementToSearch=5
base.module.elementToSearch=6
Die Spring-XML-Datei
file: myapplication.xml
<bean id="some"
class="com.some.Class">
<property name="property" value="#{base.module.elementToSearch}" />
</bean>
Und meine Class.java
file: Class.java
public void setProperty(final List<Integer> elements){
this.elements = elements;
}
Beim Debuggen erhalten die Parameterelemente jedoch nur das letzte Element in der Liste. Daher gibt es eine Liste mit einem Element mit dem Wert "6" anstelle einer Liste mit 6 Elementen.
Ich habe andere Ansätze ausprobiert, z. B. nur das Hinzufügen von Wert, #{base.module}
aber dann findet es keinen Parameter in der Eigenschaftendatei.
Eine Problemumgehung besteht darin, in der Datei elements.properties eine durch Kommas getrennte Liste zu haben, z.
base.module.elementToSearch=1,2,3,4,5,6
und benutze es als String und analysiere es, aber gibt es eine bessere Lösung?
java
spring
placeholder
properties-file
RamonBoza
quelle
quelle
Antworten:
Wenn Sie Ihr Array in einer Eigenschaftendatei wie folgt definieren:
Sie können ein solches Array wie folgt in Ihre Java-Klasse laden:
quelle
List<String>
scheint es nicht zu funktionieren, durch Kommas getrennte Werte auf dieselbe Weise in a zu lesen (die Liste enthält nur ein Element).String[]
als Typ funktioniert, während die VerwendungList<String>
nicht funktioniert.List<String>
stattString[]
, müssen Sie mindestens eine hinzufügen ,<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
um IhreapplicationContext.xml
. Andernfalls wird der Konvertierungsdienst nicht verwendet, sondern die Standardeigenschaftseditoren, die das Konvertieren von Strings in Sammlungen nicht unterstützen, nur Arrays: docs.spring.io/spring/docs/current/spring-framework-reference/…Und wenn Sie ein anderes Trennzeichen als Komma haben, können Sie dies auch verwenden.
und
in Ihren Anwendungseigenschaften, die Sie haben könnten
quelle
Hier ist ein Beispiel, wie Sie dies in Spring 4.0+ tun können
application.properties
Inhalt:Java Code:
quelle
Mit einem Spring Boot kann man folgendes machen:
application.properties
Konfigurationsklasse
Dies ist erforderlich, ohne diese Klasse oder ohne die
values
In-Klasse funktioniert es nicht.Spring Boot-Anwendungsklasse
quelle
Wenn Sie das Sternsymbol übergeben müssen, müssen Sie es in Anführungszeichen setzen.
In meinem Fall muss ich cors für Websockets konfigurieren. Also habe ich beschlossen, cors URLs in application.yml zu setzen. Für prod env verwende ich bestimmte URLs, aber für dev ist es in Ordnung, nur * zu verwenden.
In der yml-Datei habe ich:
In der Konfigurationsklasse habe ich:
quelle