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

使用YAML的Spring@PropertySource

寿高阳
2023-03-14
db:
  url: jdbc:oracle:thin:@pathToMyDb
  username: someUser
  password: fakePassword

我会用这样的方法来利用这些价值:

@Value("${db.username}") String username

但是,我最终出现了一个错误,如下所示:

Could not resolve placeholder 'db.username' in string value "${db.username}"

我如何在我的测试中也利用YAML的优点?

共有1个答案

白子昂
2023-03-14

Spring-boot对此有一个帮助器,只需添加

@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)

在测试类或抽象测试超类的顶部。

编辑:我五年前写了这个答案。它不适用于最近版本的Spring Boot。这就是我现在所做的(如果需要,请将Kotlin翻译成Java):

@TestPropertySource(locations=["classpath:application.yml"])
@ContextConfiguration(
        initializers=[ConfigFileApplicationContextInitializer::class]
)
    @Configuration
    open class TestConfig {

        @Bean
        open fun propertiesResolver(): PropertySourcesPlaceholderConfigurer {
            return PropertySourcesPlaceholderConfigurer()
        }
    }
 类似资料:
  • 我试图将上面的文件加载到一个映射中,实体部分下的数据将映射到实体对象的集合。当我得到yaml解析器错误时,这是正确的yaml语法吗。

  • 我在Java spring-boot应用程序的src/main/resources中定义了以下application-errors.yml文件: 请注意,我尝试了两种不同的格式来指定属性。 我通过@Configuration注释类中的以下Bean加载该属性文件: 我看到属性是通过Spring环境变量加载的,但不是我所期望的模式。调试时,我可以看到加载的属性文件的源包含以下值: 看起来 yaml 文

  • 我正在尝试从application.yml.中检索值下面的最后一行显示kafkaConfig为null,无法读取。如何正确设置Kafka配置和代码以从json文件中读取?我们使用@Data而不是getters/setters。 KafkaConfig.java 应用yml公司 KafkaProducerBeans.java 资源:https://codingnconcepts.com/spring

  • 我找到了类YamlPropertiesFactoryBean,它似乎能够完成我需要的工作。 我的问题是我不确定如何在我的Spring应用程序中使用这个类(它正在使用基于注释的配置)。看来我应该使用setBeanFactory方法在PropertySourcesPlaceholderConfigurer中配置它。 以前,我使用@PropertySource加载属性文件,如下所示:

  • 引入 Maven 依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc-core</artifactId> <version>${shardingsphere.version}</version> </dependency> <!-- 使用