Not registered via @EnableConfigurationProperties or marked as Spring component

SpringBoot中,将类中的属性和配置文件中的配置进行绑定时出现以下的问题:

当使用@ConfigurationProperties时IDEA顶部出现这样的提示:

按照提示点击跳转到官方文档,接着在pom.xml中添加如下的配置

复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>
复制代码

添加完后的效果是,当你写配置文件(yml,properties配置文件)时会有相关的提示

 

上面弄完后@ConfigurationProperties下面还有报错,按照提示可以看到

Not registered via @EnableConfigurationProperties or marked as Spring component,网上找到的博客有说要添加   @EnableConfigurationProperties(Person.class)【此时的Person是自定义的bean】,

 

添加后错误确实是没了,但是在SpringBoot的单元测试时会看到如下的错误:Could not autowire. No beans of 'Person' type found

 

 回到自定义的bean Person中,添加注解@Component,声明将这个组件添加至容器中,这样才可以被使用?

“只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能,”

 

 

关于@Component和@EnableConfigurationProperties找到一个讨论,觉得应该有用,只是现在还不是很理解

https://www.imooc.com/qadetail/299025

 

 

复制代码
确保添加了依赖

<dependency>

   <groupId> org.springframework.boot </groupId>

   <artifactId> spring-boot-configuration-processor </artifactId>

   <optional> true </optional>

</dependency>

如果发现@ConfigurationPropertie不生效,有可能是项目的目录结构问题,可以通过@EnableConfigurationProperties(ConnectionSettings.class)来明确指定需要用哪个实体类来装载配置信息。

Spring boot 1.5以上去除了location属性,可采用@Component的方式注册为组件,然后使用@PropertySource来指定自定义的资源目录。
复制代码

 

 

记录:通过@ConfigurationProperties获取配置文件的相关配置属性注入bean中

posted @   一去二三浪里小白龙  阅读(48123)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
//增加一段JS脚本,为目录生成使用
点击右上角即可分享
微信分享提示