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
相关推荐
栗豆包15 分钟前
w118共享汽车管理系统
java·spring boot·后端·spring·tomcat·maven
夜半被帅醒21 分钟前
MySQL 数据库优化详解【Java数据库调优】
java·数据库·mysql
万亿少女的梦16827 分钟前
基于Spring Boot的网络购物商城的设计与实现
java·spring boot·后端
醒了就刷牙1 小时前
黑马Java面试教程_P9_MySQL
java·mysql·面试
m0_748233641 小时前
SQL数组常用函数记录(Map篇)
java·数据库·sql
编程爱好者熊浪2 小时前
JAVA HTTP压缩数据
java
吴冰_hogan2 小时前
JVM(Java虚拟机)的组成部分详解
java·开发语言·jvm
开心工作室_kaic2 小时前
springboot485基于springboot的宠物健康顾问系统(论文+源码)_kaic
spring boot·后端·宠物
0zxm2 小时前
08 Django - Django媒体文件&静态文件&文件上传
数据库·后端·python·django·sqlite
白宇横流学长3 小时前
基于java出租车计价器设计与实现【源码+文档+部署讲解】
java·开发语言