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

【第八篇】 SpringBoot高级配置(配置篇)

简介

        本文介绍了SpringBoot中第三方Bean的使用方法、松散绑定的多种命名格式、常用计量单位的使用、Bean属性校验的实现、并指出YAML配置文件对进制数据的特殊处理方式。文中使用文字描述并配以图片,详细演示了SpringBoot的高级配置内容,以供大家参考。文章内容若存在错误或需改进的地方,欢迎大家指正!若对操作有任何疑问欢迎留言!非常感谢!

目录

一、第三方Bean的使用

1、将第三方类注册为SpringBoot项目中的Bean

(1)注册Bean

(2)测试

2、第三方Bean的属性绑定

(1)属性绑定

(2)测试

(3)答疑解惑

二、松散绑定

三、常用计量单位

1、时间属性

2、存储容量

四、Bean的属性校验

1、导入规范坐标

2、开启校验功能

3、具体校验类型

4、导入规范具体实现类

5、测试

6、扩展

五、关于属性绑定的一些问题

1、进制数据转换


一、第三方Bean的使用

1、将第三方类注册为SpringBoot项目中的Bean

        这里使用alibaba提供的数据库连接池DruidDataSource类作为示例

        首先需要将需要的第三方包的依赖坐标进行导入(这里并不是注册Bean的必要步骤,因演示需要才导入坐标)

(1)注册Bean

        创建一个类用于管理所有的第三方Bean,一般会创建一个config包,然后再config包下创建一个以Config结尾的配置类。该类名可以自定义,然后在该配置类上方声明@Configuration注解,声明为一个配置类,然后写一个方法,这个方法必须使用@Bean注解声明,该注解会将这个方法的返回注册为SpringBoot中的Bean,并且Bean的名称为首字母小写的方法名。

(2)测试

        可以知道在启动类这里能够得到IOC容器对象,那么只需要在这尝试获取一下DruidDataSource的Bean即可,若能获取并打印成功,代表方式正确。

2、第三方Bean的属性绑定

(1)属性绑定

        通过上面的操作已经将DruidDataSource类注册为了SpringBoot中的Bean,DruidDataSource当然也有自己的属性,那么DruidDataSource的属性值也是可以通过读取配置文件的内容来进行赋值的。

        下面以driverClass属性为例。

        首先在配置文件中配置出driverClass属性值

        然后在第三方类注册为Bean的方法上声明@ConfigurationProperties注解,并给prefix属性赋值为datasource,因为DruidDataSource中存在setDriverClassName方法,所以配置文件中的配置项就会通过setDriverClassName方法将配置项的值赋值给DruidDataSource的driverClass属性。

(2)测试

        还是在启动类中直接获取容器对象,然后获取Bean并进行打印属性值。

(3)答疑解惑

        也许会有为什么要给DruidDataSource的driverClass属性赋值,而配置项却写的是driver-class-name。

        首先中划线的问题是因为配置项的松散绑定,在下方的篇章会详细讲解,这里不再赘述。

        然后就是除去中划线,名称也和driverClass对不上,这里是因为配置项中的名称需要与实体类的set方法后的名称保持强一致。配置项名称时可以不与实体类中的属性名保持一致,因为一般情况下set/get方法后面的名称是和属性名一致的,比如自动生成或者使用lombok生成的方法,都是一致的,所以也会有配置项名必须属性名保持一致的说法。如果有特殊情况,那么只需要保证配置项中的名称需要与实体类的set方法后的名称强一致即可,与get方法、实体类名、实体属性名、set方法形参无关。详细可查看【第三篇 SpringBoot项目中的属性配置】。

二、松散绑定

        @ConfigurationProperties绑定的属性支持属性名松散绑定,@Value不支持。

        松散绑定也称宽松绑定,这种绑定机制更加的灵活,允许开发者以多种格式书写配置属性,而 Spring Boot 能够智能地将这些不同格式的属性名匹配到对应的 Bean 属性上。

        其实松散绑定也就是在配置文件中,只要名称对的上,那么名称的格式就可非常随意,可以按照不同的分格与实体属性进行绑定。

        下面以一个自定的类的ipAddress属性作为示例。

        第一种:与属性名完全保持一致

        第二种:小写格式

        第三种:下划线格式

        第N种:中划线、大写、大写中划线、胡乱写格式等等

        通过上面的演示可以知道什么是属性的松散绑定,官方推荐的格式为中划线格式,也就是ip-address格式,这种格式又称为“烤肉串格式”。最常用的格式还有驼峰格式(ipAddress)、常量格式(IP_ADDRESS)、下划线格式(ip_address)。

三、常用计量单位

1、时间属性

        JDK8提供了一个类为Duration,这个类专门用来描述时间属性的。所以在实体类中创建有关时间的属性时,就可以指定类型为Duration。

        当指定属性的类型为Duration后,默认的时间单位就是毫秒,从下面的例子可以看出。

        可以在Duration类型的属性上使用@DurationUnit注解声明,然后通过ChronoUnit枚举指定单位。

2、存储容量

        DataSize类专门用于表示数据的大小,所以在实体类中创建有关数据大小的属性时就可以指定类型为DataSize。

        当指定属性的类型为DataSize后,默认的数据大小单位就是B,从下面的例子可以看出。

        可以在DataSize类型的属性上使用@DataSizeUnit注解声明,然后通过DataUnit枚举指定单位。

四、Bean的属性校验

        开启数据校验有助于系统安全性,J2EE规范中JSR303规范定义了一组有关数据校验相关的API

1、导入规范坐标

        首先,导入JSR303规范坐标

2、开启校验功能

        然后,在指定地方开启bean属性校验功能,需要在指定类上声明@Validated注解,表示当前类需要做校验。

3、具体校验类型

        JSR303规范提供了多种注解用于校验,例如@Max用于校验最大值,value表示规范的值,message表示不符合这个规范的时候显示的提示信息。

4、导入规范具体实现类

        上面的操作只是JSR303规范的接口而具体使用还是需要导入具体实现类,这里使用的是hibernate

5、测试

        通过上面的配置就已经开启了Bean的属性校验,下面进行一项测试。

6、扩展

        点击@Max注解,然后进入到当前注解所在包javax.validation.constraints里,可以看到提供了很多用于校验的注解。

        同样hibernate也提供了非常多用于校验的注解。

五、关于属性绑定的一些问题

1、进制数据转换

        application.yaml配置文件是支持配置二进制、八进制、十进制、十六进制的数字配置的,配置文件会优先使用满足进制格式的配置来读取数字。

        例如,在配置密码的时候,设置为自己的生日0325,这个时候0325是符合八进制的规则的,那么application.yaml配置文件就会使用八进制读取数字,然后转换成十进制进行传递。

        解决办法:要么就直接使用十进制数字,获取对数字使用双引号包裹即可

上一篇——》【第七篇】 SpringBoot项目的热部署https://blog.csdn.net/qq1743177790/article/details/148498772

相关文章:

  • 【SpringBoot自动化部署方法】
  • 图像超分辨率
  • 深度学习模块缝合
  • 线程与线程池
  • Pandas-如何正确将两张数据表进行合并
  • 碳排放智能分析与优化系统:工业减排的革命性突破
  • 高保真组件库:下拉框
  • 面试实例题
  • 【P2P】低延迟直播(尤其是 P2P 实时分发)常用的 x264 编码参数示例
  • 小游戏不能玩了?最好用flash扩展程序
  • 计算机网络笔记(三十)——5.2用户数据报协议UDP
  • 什么是贫血模式
  • FastAPI实战起步:从Python环境到你的第一个“Hello World”API接口
  • 哈希map中不能将数组作为键的原因 leetcode49
  • JavaScript 内置对象全解析
  • TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
  • 《从函数模板到类模板:OP泛型编程进化论》
  • Python项目的构建和部署方案推荐
  • QTreeWidget 应用场景与用法详解
  • Docker部署SpringBoot项目
  • wordpress css sprite/关键词排名优化公司推荐
  • 紧急大通知狼拿笔记好/aso关键词覆盖优化
  • 重庆网站建设公/iis搭建网站
  • 外贸b2b电子商务平台/长沙弧度seo
  • 湖北省疫情最新情况/外贸seo优化
  • 网站建设用到的工具/免费建网站