Groovy@singleton工作不正常

Groovy@singleton工作不正常,groovy,singleton,Groovy,Singleton,下面是我试图作为单例执行的代码 MyResourceBundleSingleton.groovy//groovy类 @Singleton class MyResourceBundleSingleton { public ResourceBundle getResourceBundle () { return someService.getMyResourceBundle() // this bundle is returned by calling a separate

下面是我试图作为单例执行的代码

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

//调用java

groovy和java代码都调用相同的方法
someService.getMyResourceBundle()
。在java代码中,只需加载.properites文件并为每次调用返回相同的文件,这是singleton的正确方法。 而在groovy中,当.properties文件发生更改时,使用@singleton返回更改后的文件。我不知道为什么会发生这种情况。我希望它返回相同的.properties文件。
groovy代码中有什么遗漏吗?

您在两个单例中对
getResourceBundle()
的每次调用中都调用了该服务。假设这加载了一个属性文件,那么在这两种情况下都没有理由缓存它。如果Java版本返回的是缓存版本,那么保存它的代码中没有显示其他内容。

我修改了groovy代码以初始化构造函数中的资源包。然后它开始像单例一样正常工作(即,只加载一次,并且在重新启动之前不会反映文件中所做的更改)。但是对于java代码,没有缓存,它与我使用的代码相同,我不知道为什么它返回相同的实例。从技术上讲,它应该返回我当前更新的属性文件。但它不是,它给了我同样的文件,我想知道如何??!!!不管怎样,我会头脑风暴的。
MyResourceBundleSingleton.instance.getResourceBundle()
MyResourceBundleSingleton.getMyResourceBundleSingletonInstance().getResourceBundle()