使用Spring访问共享配置对象



我是春天的新手,不确定是否有一种简单的方法来尝试做。在我将现有的一些现有代码库迁移到Spring之前,我是在一个名为ConfigurationProvider的单例类中手动加载配置属性 - 非常直接。

现在,我已经迁移到Spring Cloud Config,我正在尝试确定几乎没有手动设置的全局配置对象的务实方法。我目前的实施是一个不太辛格尔顿的课程,几乎完成了我想要做的事情,但遇到了设计缺陷。

@Configuration
public class ConfigurationProvider {
    private static ConfigurationProvider _instance;
    @Autowired
    private StorageConfiguration storage;
    // this being the design flaw
    public ConfigurationProvider() {
        _instance = this;
    }
    public static ConfigurationProvider getInstance() {
        return _instance;
    }
    ...
}

我考虑过如果ConfigurationProvider::_instance已经初始化,但这只是在现有代码气味上。凭借春季靴的所有铃铛和哨子,我想使用使用该框架的数百个注释之一,有一种更干净的方法。

您不需要构造函数或静态方法&财产。弹簧靴照顾为您管理对象。

无论您要在哪里使用ConfigurationProvider声明:

@Autowired
ConfigurationProvider configuration;

并使用此实例

马丁的答案比我想要的解决方案更可取。但是,有一种方法可以通过编程方式注入豆子,但它沿着反图案的线条踩踏。就我而言,由于设计局限性,我无法重构配置单例。

@Autowired
private AutowireCapableBeanFactory autowireFactory;
...
autowireFactory.autowireBean(SingletonClass.getInstance());

相关内容

  • 没有找到相关文章

最新更新