Feder - lese-Eigenschaft-Wert aus properties-Datei in statische Feld der Klasse
Habe ich eine utility-Klasse, wo ich eine Methode, die erfordert Benutzernamen und Kennwort zum verbinden mit anderen url. Ich muss immer Benutzernamen in den Eigenschaften der Datei, so dass ich jederzeit auch wieder ändern. Aber wie verwende ich es in der statischen Methode (als utility-Klasse) , Problem ist er zeigt null .(d.h. es ist nicht in der Lage zu Lesen von properties-Datei).
Aber wenn ich ckecked, dass die Werte in einigen anderen controller sind Sie immer da.
Also meine Frage ist, wie lese-Eigenschaft-Wert in statischen Feld
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:/myservice_detaults.properties</value>
<value>classpath*:/log4j.properties</value>
</list>
</property>
</bean>
//in Utitlity-Klasse code
@Value("${app.username}")
static String userName;
public static connectToUrl(){
//use userName
//userName showing null
}
- Wie ist Ihre utility-Klasse geladen/gespritzt ?
- Meine utility-Klasse normal-Klasse keine spring Klasse und dem aufrufen connectToUrl als normaler statischer aufrufen
- Wenn Sie Ihre utility-Klasse nicht geladen ist, durch die Feder Kontext, Sie können nicht Spritzen Parameter. Jedoch können Sie immer noch den Vorschlag von @AmitChotaliya. Eine gute Praxis mit Frühling ist die Verwendung von singleton-beans geladen spring-Kontext anstelle von statischen Methoden in utility-Klassen.
- danke, ich denke, Lösung von AmitChotaliya sollte mit meinem Problem.Krank versuchen. Aber kann man etwas erklären, über Ihre point >> "Eine gute Praxis mit Frühling ist die Verwendung von singleton-beans geladen spring-Kontext anstelle von statischen Methoden in utility-Klassen.".. jeder link für mehr info
- Es gibt viele Gründe für diese, aber zumindest würden Sie Ihr
@Value("${app.username}")
- Eigenschaft ordnungsgemäß initialisiert, ohne irgendetwas besonderes. Wenn Sie möchten, dass einige links, die 2. Antwort auf diese Frage kann Ihnen einige weitere "Argumente" stackoverflow.com/questions/7270681/.... Base auf meinen eigenen Erfahrungen, ich verwende statische Methoden auf utility-Klasse nur, wenn ich nicht die Notwendigkeit, Initialisierung zu verwenden (das ist nicht Ihr Fall). Ansonsten, ich benutze spring beans.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Sie
Utility
- Klasse können Sie eine setter-Methode, um die Eigenschaften festzulegen und dann können SieMethdInvokingFactoryBean
.package org.javahive.propertyreader.Beispiel;
package org.javahive.propertyreader.Beispiel;
Oder mit der
@Value
über die nicht-statische setter-Methode fürusername
zB.
Frühling nicht zulassen zu injizieren Werte in nicht-Finale statische Felder aber machen Sie Ihren privaten Bereich und es sollte funktioniert.
Oder nur
Versuchen Sie dies :
Stellen Sie Ihrer Klasse eine Komponente