SpringBoot --条件注解与属性绑定

1. 条件注解

如果注解指定的条件成立,则触发指定行为。在前文介绍自动配置机制时,也可以看到在SpringBoot的源码中使用了该注解。

常用的条件注解主要有以下四个:

  • @ConditionalOnClass:如果类路径中存在这个类,则触发指定行为
  • @ConditionalOnMissingClass:如果类路径中不存在这个类,则触发指定行为
  • @ConditionalOnBean:如果容器中存在这个Bean(组件),则触发指定行为
  • @ConditionalOnMissingBean:如果容器中不存在这个Bean(组件),则触发指定行为

在注解中,也可以设置属性值来完善判断条件。例如:@ConditionalOnBean(value=组件类型,name=组件名字):判断容器中是否有这个类型的组件,并且名字是指定的值。

2. 属性绑定

与条件注解类似,在自动配置机制中,SpringBoot也使用到了相关注解。这里就对属性绑定进行介绍。

@ConfigurationProperties注解可以声明组件的属性和配置文件哪些前缀开始项进行绑定。假如我们自己定义了一个配置类,需要获取到配置文件中指定前缀下的配置值,那么我们就可以在配置类上声明该注解,并在注解中指定配置前缀,配置类中的属性值就会与配置文件中大哥配置一一绑定。

由于SpringBoot 默认只扫描自己主程序所在的包,如果导入第三方包,即使组件上标注了 @Component@ConfigurationProperties 注解也没用,因为组件扫描不到。那么,如果要使第三方包的属性绑定生效,我们该怎么做呢?

可以使用@EnableConfigurationProperties快速注册注解,在注解中声明第三方包中属性绑定的属性类,这样该属性类就可以和配置文件进行绑定。

总结

  • 如果我们要将容器中自己编写的任意组件(Bean)的属性值和配置文件的配置项的值进行绑定:
    • 给容器中注册组件(@Component、@Bean)
    • 使用@ConfigurationProperties 声明组件和配置文件的哪些配置项进行绑定
  • 如果我们要激活第三方包的属性绑定(第三方已经使用@ConfigurationProperties 声明组件和配置文件的哪些配置项进行绑定):
    • 使用@EnableConfigurationProperties
相关推荐
Python私教几秒前
软件开发报价为什么能差 3 倍:需求范围、验收标准和变更成本怎么算
后端·python·架构
苏三说技术1 分钟前
为什么越来越多人用gRPC?
后端
MacroZheng2 分钟前
程序员看文档神器,装上它,看Spring官方文档就一目了然了!
java·人工智能·后端
想风3 分钟前
Claude Code 实用技巧工作坊 —— Boris Cherny
前端·后端·github
长栎5 分钟前
Java 17 的模式匹配,正在杀死访问者模式
后端
骇客野人7 分钟前
SpringBoot 接入 Kafka 完整实操步骤
spring boot·kafka·linq
风曳丷10 分钟前
# 03|恶意文本如何一路摸到工具按钮
后端
2501_9159184110 分钟前
Rust 程序抓包解密,rustls 不认系统证书的几种办法
开发语言·后端·网络协议·ios·adb·https·rust
深漂的华哥12 分钟前
Ruoyi-Vue-Plus(V5.6.2) 开发环境搭建
java·前端·spring boot·后端·spring·ruoyi
wanger6115 分钟前
AI应用开发知识点总结
java