【Spring Boot】5. @ConfigurationProperties(prefix=xx) 单元测试注入

本文探讨了在Spring Boot单元测试中,使用@ConfigurationProperties(prefix=“xx”)注解的配置类如何正确注入的问题。当在单元测试中遇到配置类属性为null的错误时,通过分析发现,配置的注入是在构造函数之后完成的。通过添加@TestPropertySource注解,成功使单元测试读取到配置文件内容,解决了问题。尽管测试通过,但背后的原理尚待进一步研究。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot单元测试中,@ConfigurationProperties(prefix=“xx”) 注入

今天在对写单元测试时,发现用@ConfigurationProperties(prefix=“xx”) 注入配置的类,无法获取到配置的内容,简单模拟一下:

首先是配置类,通过@ConfigurationProperties注入配置,生成两个Bean,用于标识不同的信息模块。

@Configuration
public class MsgTemplateConfig {
   
   

    @Bean(name = "DAILY")
    @ConfigurationProperties(prefix = "alarm.message.daily")
    MsgTemplate dailyMsgTemplate() {
   
   
        return new MsgTemplate();
    }

    @Bean(name = "ERROR")
    @ConfigurationProperties(prefix = "alarm.message.error")
    MsgTemplate errorMsgTemplate() {
   
   
        
D:\tools\java\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:E:\yuyan\IntelliJ IDEA\IntelliJ IDEA 2024.3.1.1\lib\idea_rt.jar=52998:E:\yuyan\IntelliJ IDEA\IntelliJ IDEA 2024.3.1.1\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath D:\code\Vue3\ShangKe\2025-3\AlumniSys\target\classes;D:\tools\Maven\local\org\springframework\boot\spring-boot-starter-web\3.4.3\spring-boot-starter-web-3.4.3.jar;D:\tools\Maven\local\org\springframework\boot\spring-boot-starter\3.4.3\spring-boot-starter-3.4.3.jar;D:\tools\Maven\local\org\springframework\boot\spring-boot\3.4.3\spring-boot-3.4.3.jar;D:\tools\Maven\local\org\springframework\boot\spring-boot-autoconfigure\3.4.3\spring-boot-autoconfigure-3.4.3.jar;D:\tools\Maven\local\org\springframework\boot\spring-boot-starter-logging\3.4.3\spring-boot-starter-logging-3.4.3.jar;D:\tools\Maven\local\ch\qos\logback\logback-classic\1.5.16\logback-classic-1.5.16.jar;D:\tools\Maven\local\ch\qos\logback\logback-core\1.5.16\logback-core-1.5.16.jar;D:\tools\Maven\local\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;D:\tools\Maven\local\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;D:\tools\Maven\local\org\slf4j\jul-to-slf4j\2.0.16\jul-to-slf4j-2.0.16.jar;D:\tools\Maven\local\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\tools\Maven\local\org\yaml\snakeyaml\2.3\snakeyaml-2.3.jar;D:\tools\Maven\local\org\springframework\boot\spring-boot-starter-json\3.4.3\spring-boot-starter-json-3.4.3.jar;D:\tools\Maven\local\com\fasterxml\jackson\core\jackson-databind\2.18.2\jackson-databind-2.18.2.jar;D:\tools\Maven\local\com\fasterxml\jackson\core\jackson-annotations\2.18.2\jackson-annotations-2.18.2.jar;D:\tools\Maven\local\com\
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值