当前位置: 首页 > news >正文

SpringBoot之@ConfigurationProperties、@EnableConfigurationProperties

@ConfigurationProperties

这个注解不仅可以为yml某个类注入还可以为第三方bean绑定属性

  • 为yml某个类注入

只要将对应的yml类对象声明实体pojo并交给spring容器管理,再在类上使用@ConfigurationProperties绑定对应的类名即可

涉及到两个知识点,这个类对象要交给spring容器管理,则需要将它声明为bean对象,需要用@Conponent注解,第二个需要@ConfigurationProperties(“xxx”),指明为yml中哪个类(xxx)

  • 使用@ConfigurationProperties为第三方bean绑定属性

DruidDataSource 作为第三方的bean它有一个属性为driverClassName

@Bean
@ConfigurationProperties(prefix = "datasource")
public DruidDataSource dataSource(){DruidDataSource ds = new DruidDataSource();return ds;
}
datasource:driverClassName: com.mysql.jdbc.Driver

@EnableConfigurationProperties

@EnableConfigurationProperties注解可以将使用@ConfigurationProperties注解对应的类加入Spring容器
 

@SpringBootApplication
@EnableConfigurationProperties(ServerConfig.class)
public class DemoApplication {
}

//@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
}

注意:@EnableConfigurationProperties与@Component不能同时使用

在这里的两个代码其实是冲突的,如果2的注释被放开系统运行将会报错,因为ServerConfig 将被声明为两个同名的bean在spring容器中,这是不被允许的;@EnableConfigurationProperties(ServerConfig.class)代表开启ConfigurationProperties注解并按照括号里面的类进行注入并生成bean,所以是冲突的

@EnableConfigurationProperties不允许单独存在而没有()里面指明的类,这样也会报错找不到对应ServerConfig 的bean,当然这个编译时期就会报错idea会提示你@ConfigurationProperties(prefix = "servers")

解除使用@ConfigurationProperties注释警告

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId>
</dependency>

宽松绑定

@ConfigurationProperties绑定属性支持属性名宽松绑定

注意:宽松绑定不支持注解@Value引用单个属性的方式 

绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符

以下@ConfigurationProperties(prefix = "dataSource")会报错,因为绑定前缀命名命名规则

 

 

http://www.lryc.cn/news/26493.html

相关文章:

  • 数组一次性删除多条数据
  • 相机删除照片如何恢复?一键解决它
  • vue3搭建教程(基于webpack+create-vue+ element-plus)
  • 代码随想录算法训练营第四十二天 | leetcode 1049. 最后一块石头的重量 II,494. 目标和,474.一和零
  • Java8中Lambda表达式之Collection 的常见用法
  • SpringCloud系列知识快速复习 -- part 2(Sentinel微服务保护,Seata分布式事务,Redis分布式缓存和多级缓存)
  • 设置CentOS7的时间与网络同步
  • java开发手册之编程规约
  • Camera | 5.Linux v4l2架构(基于rk3568)
  • 机房PDU如何挑选?
  • lab备考第二步:HCIE-Cloud-Compute-第一题:FusionCompute
  • js-cookie和vue-cookies(Cookie使用教程)
  • 开创高质量发展新局面,优炫数据库助推数字中国建设
  • 【项目实战】为什么我选择使用CloseableHttpClient,而不是HttpClient,他们俩有什么区别?
  • Spark 内存运用
  • SpringBoot集成Swagger3.0(入门) 02
  • 网络协议丨ICMP协议
  • 12.1 基于Django的服务器信息查看应用(系统信息、用户信息)
  • ExSwin-Unet 论文研读
  • 置顶!!!主页禁言提示原因:在自己论坛发动态误带敏感词,在自己论坛禁止评论90天
  • 优思学院|解密六西格玛:探索DMAIC和DMADV之间的区别
  • Pytorch的DataLoader输入输出(以文本为例)
  • 代谢组学:Microbiome又一篇!绘制重症先天性心脏病新生儿肠道微生态全景图谱
  • Java基本类型所占字节简述
  • Linux vi常用操作
  • Unicode(宽字节)、ANSI(多字节)
  • STM32实战之LED循环点亮
  • 智慧厕所智能卫生间系统有哪些功能
  • 【网络】套接字 -- TCP
  • NDK C++ map容器