以下は、シングルトンとして実行しようとしているコードです
MyResourceBundleSingleton.groovy // Groovy クラス
@Singleton
class MyResourceBundleSingleton {
public ResourceBundle getResourceBundle () {
return someService.getMyResourceBundle() // this bundle is returned by calling a separate method
}
MyResourceBundleSingleton.java // Java クラス
public class MyResourceBundleSingleton {
private MyResourceBundleSingleton () {
}
private static MyResourceBundleSingleton myBundle;
public static MyResourceBundleSingleton getMyResourceBundleSingletonInstance() {
if (myBundle == null) {
synchronized (MyResourceBundleSingleton.class) {
if (myBundle == null) {
myBundle = new MyResourceBundleSingleton();
}
}
}
return myBundle;
}
public ResourceBundle getResourceBundle () {
return someService.getMyResourceBundle() // this bundle is returned by calling a separate method
}
}
// Groovy の呼び出し
MyResourceBundleSingleton.instance.getResourceBundle()
// Java を呼び出す
MyResourceBundleSingleton.getMyResourceBundleSingletonInstance().getResourceBundle()
Groovy コードと Java コードの両方が同じメソッドを呼び出しますsomeService.getMyResourceBundle()
。Javaコードでは、.properitesファイルがロードされ、呼び出しごとに同じファイルが返されます。これは、シングルトンの適切な方法です。groovy では、@singleton を使用して .properties ファイルに変更があった場合はいつでも変更されたファイルが返されます。なぜこれが起こっているのかわかりません。同じ .properties ファイルが返されることを期待していました。Groovy コードで何か不足していますか??