私は次のようなクラスを持っています:
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
}
これは、アプリの起動時に設定できるグローバル構成オブジェクトとして機能し、プロジェクト全体で数十のクラスで使用されます。
// 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
}
}
現在、このコードを Spring プロジェクトにインポートしており、Sprinig XML (Bean) を構成しようとしています。私の推測では、孤独なConfigurator
Bean を次のように (または同様の方法で)定義できると思います。
<bean id="configurator" class="com.me.myapp.Configurator" scope="singleton">
<property name="maxRange" value="30"/>
<!-- etc., for all properties -->
</bean>
そうWidgetFactory#doSomething
すれば、実行時に、Spring はすでにConfigurator
クラスをロードして事前に構成しています。
を設定するのは正しいですscope="singleton"
か、それとも問題ではありませんか? 静的プロパティを正しく設定していますか? ここで行う必要がある、または考慮する必要があることは他にありますか? 前もって感謝します。