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

Spring 4中@ConfigurationProperties的替代选项

祁建明
2023-03-14

我发现@ConfigurationProperties注释在使用Spring Boot时从属性中获取哈希映射非常有用。但是我有一个老项目,它使用Spring4.2。9我无法更改的发布版本,显然它没有@ConfigurationProperties,或者我不知道它在4.2中的依赖性。9释放。有谁能建议在项目中使用它的最佳方式吗。如果我在Spring4.2中包含spring启动依赖项。9发布到目前为止,它没有造成任何冲突,但这样做是否明智?以下是我的POM:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
    <spring.version>4.2.9.RELEASE</spring.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${spring.version}</version>
     </dependency>
     <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
     </dependency>
     <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
     </dependency>
</dependencies>

共有1个答案

沈茂
2023-03-14

在抽象类ENumableProperty tySource中有一个getProperty tyNames()方法,它可能很有用。

在这里,我从应用程序中获取以“prefix”开头的所有属性。属性文件。

@PropertySource("classpath:application.properties")
public class AppConfiguration {

    @Autowired
    ConfigurableEnvironment env;

    @Bean("props")
    public Properties props() {
        Properties properties = new Properties();
        org.springframework.core.env.PropertySource<?> propertySource =
                env.getPropertySources().get("class path resource [application.properties]");
        for (String k : ((EnumerablePropertySource) propertySource).getPropertyNames()) {
            if (k.startsWith("prefix")) {
                properties.setProperty(k, (String) propertySource.getProperty(k));
            }
        };
        return properties;
    }
}

请注意,Spring Boot的@ConfigurationProperties删除了前缀,但上面的代码保留了它。

 类似资料:
  • 问题内容: 我想用逗号作为分隔符连接一个ArrayList。我找到了这个答案,指出可以在Java中使用。 但是,当我尝试使用此功能时,Android Studio出现以下错误: 无法解析方法’join(java.lang.String,java.lang.String,java.lang.String,java.lang.String)’ Android Studio是否有一个好的简洁的替代方法(

  • 问题内容: 我正在使用Java PreferencesAPI在swing/ java应用程序中存储和检索少量信息。 现在,我已设置Java WebStart,以从我的网页启动该应用程序,并且出现了安全异常。为了摆脱此异常,我必须提示用户输入权限。我拒绝这样做,因为我的应用程序不执行需要用户许可的其他操作。 这就是为什么我需要另一种解决方案来存储从一个执行到另一个执行的几个键值。某种Cookie或其

  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 我一直在通过Netbeans使用CodeNameOne设计一个应用程序,并遇到了一些问题,特别是“找不到符号”编译错误。经过进一步的研究,我发现这是由于CNO不支持某些库/杂项。 我想知道是否有其他方法可以使用以下库/执行任务: (从文件读取)导入java.io.file;符号:类文件位置:package java.io (抛出FileNotFoundException)导入java.io.Fil

  • 之前我在firefox中使用Selenium IDE 2.9.1插件,但是由于某些原因,我不得不转向Chrome,使用Selenium IDE 3.2.3插件。 在旧版本中,我有以下命令来查找测试用例的执行时间: storeEval |新日期()。getTime();|开始时间 一些测试案例数据 store Eval|new Date(). gettime();|endTime store|(${

  • 问题内容: 我必须在MySQL中编写这样的查询: 但是MySQL不支持关键字 EXCEPT 。是否有 标准模式 可以正确使用另一个模拟MySQL中的除外的运算符? 问题答案: 您可以使用NOT IN