Dynamisches laden von properties Datei mit Spring

Habe ich geschrieben PropertyUtils-Klasse (aus dem internet), die geladen werden, die die Eigenschaften

<bean id="propertiesUtil" class="com.myApp.PropertiesUtil" >
    <property name="locations">
        <list>
            <value>classpath:myApp/myApp.properties</value>         
        </list>
    </property>
</bean>

und ein PropertiesUtil Klasse ist, wie unten

public class PropertiesUtil extends PropertyPlaceholderConfigurer {

    private static Map<String, String> properties = new HashMap<String, String>();

    @Override
    protected void loadProperties(final Properties props) throws IOException {
        super.loadProperties(props);
        for (final Object key : props.keySet()) {
            properties.put((String) key, props.getProperty((String) key));
        }
    }

    public String getProperty(final String name) {
        return properties.get(name);
    }

}

Später, ich kann das Eigentum durch den Aufruf PropertiesUtil.getProperty () - Methode.

Aber jetzt möchte ich diese etwas zu modifizieren, so dass, Wenn die Anwendung.Eigenschaften modifiziert werden/geändert von Benutzer, es sollte wieder geladen werden

Wahrscheinlich muss ich FileWatcher Klasse

public abstract class FileWatcher extends TimerTask {
    private long timeStamp;
    private File file;

    public FileWatcher(File file) {
        this.file = file;
        this.timeStamp = file.lastModified();
    }

    @Override
    public final void run() {
        long timeStampNew = this.file.lastModified();

        if (this.timeStamp != timeStampNew) {
            this.timeStamp = timeStampNew;
            onChange(this.file);
        }
    }

    protected abstract void onChange(File newFile);
}

aber meine Zweifel sind

  1. Wie erstelle ich Datei-Objekt unter Verwendung classpath:myApp/myApp.Eigenschaften
    (weil der absolute Pfad ist nicht bekannt)
  2. Wie rufe ich/Anruf Frühjahr zu
    laden/übergabe der neuen Anwendung.Eigenschaften PropetisUtil Klasse [in
    onChange-Methode].
In Ihrer Methode loadProperties(), gibt es einen bestimmten Grund, warum Sie das looping für jede Eigenschaft? Kannst du nicht mit einem Konstruktor, der die Eigenschaften der Klasse, nimmt Eigenschaften wie param?

InformationsquelleAutor Reddy | 2013-01-02

Schreibe einen Kommentar