我是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已经被初始化,则抛出异常,但这只是在现有代码的味道上加了一点。借助Spring Boot的所有细节,我可以想象有一个更干净的方法是使用此框架附带的数百个注释之一。

最佳答案

您不需要构造函数或静态方法和属性。 Spring Boot负责为您管理对象。

无论您想在何处使用ConfigurationProvider声明:

@Autowired
ConfigurationProvider configuration;


并使用这个实例

10-06 13:31