0

我正在设置一个 Spring Boot 应用程序,其中某些配置是从我的 application.yaml 文件中读取的。我之前已经做过几次并且效果很好,但是我想知道是否有更好的方法可以在运行时访问此配置,或者我是否通过不遵循一些最佳实践来创建可能的问题。

现在提取配置的类被简单地定义为一个组件,如下所示:

@Component
@EnableConfigurationProperties
@ConfigurationProperties("myPrefix")
public class MyExternalConfiguration{
    private HashMap<String, Boolean> entries= new HashMap<String, Boolean>();

    public Boolean getConfigurationForKey(String key) {
        return this.entries.get(key);
    }
}

然后自动连接到需要访问此配置的其他几个类,如下所示:

@Component
public class MyClass{
    @Autowired
    private MyExternalConfiguration myExternalConfiguration;

    public void doSomething(){
        //...
        Boolean someEntry = myExternalConfiguration.getConfigurationForKey(someKey);
    }
}

现在,这确实工作得很好。只是我已经看到了将此类配置作为单例处理的示例(尽管不是在 Spring-Boot 环境中)。我想问一下,是否有一些普遍接受的方式来访问外部配置,或者您是否发现我在项目中访问它的方式存在问题。

先感谢您!

4

1 回答 1

1

Spring Boot 参考手册中有一整章是关于配置的:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config

简单地说,有两种访问配置的选项:

使用 Value 注释:

@Value("${name}")
private String name;

或带有配置类的类型安全:

@ConfigurationProperties(prefix="my")
public class Config {

    private List<String> servers = new ArrayList<String>();

    public List<String> getServers() {
        return this.servers;
    }
}

所以不需要自己去读取配置文件。

于 2019-06-05T07:41:53.800 回答