当前位置: 首页 > 知识库问答 >
问题:

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

姜学海
2023-03-14

但是,我希望有一个通用的PropertyHelper类,它可以用于使用application.properties中的属性构建java.util.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);

共有1个答案

唐默
2023-03-14

您可以在环境周围创建一个包装器,它将返回一个现成的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;
    }
}
 类似资料:
  • 我想问一下,如何在SpringBoot中将文件夹作为资源或文件加载。假设我有src/main/resources/testfolder,我想做如下事情: ^但这将失败,因为ResourceUtils只能加载实际文件(.txt、.csv等),不是文件夹。。提前非常感谢。。 编辑: 原因是我需要得到文件夹的绝对路径... folderpath应该是“/workspace/intellij/Projec

  • 问题内容: 我有一堆.RData时间序列文件,想直接将它们加载到Python中,而无需先将文件转换为其他扩展名(例如.csv)。对实现此目标的最佳方法有何想法? 问题答案: 人们在R-help和R-dev列表上问这种事情,通常的答案是代码是文件格式的文档。因此,任何其他语言的任何其他实现都是 hard ++ 。 我认为唯一合理的方法是安装RPy2并从中使用R的功能,并随即转换为适当的python对

  • 问题内容: 我试图将我的网站从基于XML的配置文件迁移到基于JSON的配置文件。有没有一种方法可以加载文件,使其变成对象?我一直在搜索网络,但找不到。我已经将文件转换并另存为。我宁愿不使用第3方库。 问题答案: 您 确实 应该使用已建立的库,例如Newtonsoft.Json(甚至Microsoft都使用MVC和WebAPI等框架),或者.NET的内置JavascriptSerializer。 这

  • 问题内容: 我一直试图将多个文件加载到一个表中,以便它们适合同一行。 我可以将它们分别插入,但是问题出在值之内,因此我打算加入该表。如果发生这种情况,我会得到太多的值-无用的数据。 我实际上研究过的另一件事是将文件与 但是,它变成了一个烂摊子。如果第一种方法不起作用,那么我可以使用第二种方法,但是我也需要有关它的建议。 问题答案: 您可以将4个文件加载到4个(临时)表中(每个表都有一个自动编号的字

  • 我在我的机器上导出了一些简单的数据库CRED作为ENV变量。 我试图将这些动态加载到spring boot的配置文件中,但没有成功。我开始相信这是因为应用程序在TomCat容器中运行,因此与机器环境变量隔离。 但是,它仍然被视为的纯文本。Spring Boot是否具有读取系统环境变量的能力?

  • 我正在尝试在Spring Boot项目中加载应用程序属性进行测试。我也在使用@DataJpaTest注释。许多人建议使用@TestProperty tySource注释与@datajpaTest的组合,但它不是加载属性。如果我使用@SpringBooTest,它就是加载属性。 我的应用程序属性文件位于主/资源/文件夹中。如果我使用,它正在工作,但我有 这未能使用Spring启动测试进行自动配置。我