Printemps de l'injection d'un statique (global) singleton

J'ai une classe qui ressemble à ceci:

public class Configurator {
    private static Configurator INSTANCE = null;

    private int maxRange = 1;

    //many other properties; each property has a default value

    private static synchronized Configurator getInstance() {
        if(INSTANCE == null)
            return new Configurator();

        return INSTANCE;
    }

    public static int getMaxRange() {
        getInstance().maxRange;
    }

    public static void setMaxRange(int range) {
        getInstance().maxRange = range;
    }

    //Getters and setters for all properties follow this pattern
}

Elle sert à la configuration globale de l'objet qui peut être mis sur l'application de démarrage, puis est utilisé par des dizaines de classes tout au long du projet:

//Called at app startup to configure everything
public class AppRunner {
    Configurator.setMaxRange(30);
}

//Example of Configurator being used by another class
public class WidgetFactory {
    public void doSomething() {
        if(Configurator.getMaxRange() < 50)
            //do A
        else
            //do B
    }
}

Je suis maintenant l'importation de ce code dans un projet pour le Printemps, et je suis en train de configurer mon Sprinig XML (haricots). Ma conjecture est que je pourrais définir un seul Configurator bean comme si (ou quelque chose de similaire):

<bean id="configurator" class="com.me.myapp.Configurator" scope="singleton">
    <property name="maxRange" value="30"/>
    <!-- etc., for all properties -->
</bean>

De cette façon, lorsque WidgetFactory#doSomething exécute, le Printemps sera déjà chargé le Configurator classe et configuré à l'avance.

Est-elle corriger pour moi de mettre la scope="singleton", ou ne présente pas d'importance? Suis-je en définissant les propriétés statiques correctement? Est-il autre chose que je dois faire ou envisager ici? Merci à l'avance.

OriginalL'auteur | 2013-02-01