在Spring Boot中将application.properties文件加载到java.util.Properties

Nocoder

我通读了有关外部配置的Spring Boot文档,并且看到它会自动加载src / main / resources / application.properties文件,然后可以使用注释将其连接到Bean属性。

但是我想有一个通用PropertyHelper类,可用于使用java.util.Propertiesapplication.properties中的属性来构建能做到吗?

目前,我们正在手动实现此目标,如下所示:

public class PropertyHelper {

    private static Properties loadProperties() {
        try {

             String propsName = "application.properties";
             InputStream propsStream = PropertyHelper.class
                    .getClassLoader().getResourceAsStream(propsName);
            if (propsStream == null) {
                throw new IOException("Could not read config properties");
            }

            Properties props = new Properties();
            props.load(propsStream);
亚历克斯

您可以创建一个Wrapper环境,将返回一个现成的使用环境PropertySource

您将以这种方式使用它:

@PropertySource(name="myName", value="classpath:/myName.properties")
public class YourService {

    @Autowired
    private CustomMapProperties customMapProperties;
    ...
    MapPropertySource mapPropertySource = customMapProperties.getMapProperties("myName");
    for(String key: mapPropertySource.getSource().keySet()){
        System.out.println(mapPropertySource.getProperty(key));
    }

CustomMapProperties被注入Environment并根据其名称返回请求和加载的属性文件:

@Component
public class CustomMapProperties {

    @Autowired
    private Environment env;

    public MapPropertySource getMapProperties(String name) {
        for (Iterator<?> it = ((AbstractEnvironment) env).getPropertySources().iterator(); it.hasNext();) {
            Object propertySource = it.next();
            if (propertySource instanceof MapPropertySource
                    && ((MapPropertySource) propertySource).getName().equals(name)) {
                return (MapPropertySource) propertySource;
            }
        }
        return null;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将属性文件加载到java.util.Properties中?

在Spring Boot中,如何将yml节作为java.util.Properties加载

在Spring Boot中将spring.application.json用于application.properties文件

当文件列表是参数时,使用 Spring <util:properties /> 加载多个属性文件的问题

<util:properties>等同于基于Java的Spring配置

无法从 Spring Boot 服务中的 application.properties 加载值

Spring Boot-从依赖的jar加载application.properties/yml

Spring Boot EnvironmentPostProcessor未加载application.properties

Intelij Spring Boot 2 application.properties

Spring Boot 从 application.properties 读取值

Spring Boot邮件忽略application.properties

Spring Boot未加载bootstrap.properties文件

Spring Boot:如何使用UTF-8加载application.properties文件

Spring Boot jar中的application.properties文件在哪里?

从 spring boot application.properties 文件访问 amqp_URI

当在application.properties中使用spring.profile.default时,Spring Boot不加载默认配置文件

Spring Boot的application.yml和application.properties

Heroku Spring application.properties文件

在JAR文件中将资源加载到Java Spring中

Spring Boot从依赖项继承application.properties

在Spring Boot的application.properties中使用系统变量

在 spring boot 中从 application.properties 获取属性

Spring Boot application.properties值未填充

在application.properties中用于Spring Boot的Keycloak配置

防止覆盖application.properties中的某些属性-Spring Boot

在Spring Boot中在application.properties中使用Maven属性

Spring Boot-从Application.properties填充列表/集合?

Spring Boot应用程序:无法获取application.properties?

Spring Boot-Application.properties中的自定义变量