热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringBoot实用篇二(高级配置)

SpringBoot实用篇二(高级配置)1、ConfigurationProperties(prefix”)创建ServerConfig实体类*
SpringBoot实用篇二(高级配置)

1、@ConfigurationProperties(prefix = " ”)

创建ServerConfig实体类

/*** 项目名称:SpringBootProject* 描述:属性类** @author zhong* @date 2022-05-26 6:35*/
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {private Integer port;private String ipAddress;private long timeout;
}

获取属性【设置属性值】

servers:port: 8080ipAddress: 198.168.0.1timeout: -1

在引导类里面获取到

@SpringBootApplication
public class Springboot12ConfigurationApplication {public static void main(String[] args) {ConfigurableApplicationContext run = SpringApplication.run(Springboot12ConfigurationApplication.class, args);ServerConfig bean = run.getBean(ServerConfig.class);System.out.println(bean);}

启动的时候,就会将配置里面设置的属性输出


@ConfigurationProperties(prefix = " ”)为第三方bean数据绑定


  1. 导入druid坐标

    <dependency><groupId>com.alibabagroupId><artifactId>druidartifactId><version>1.1.10version>
    dependency>

  2. 配置文件设置

    datasource:driverClassName: com.mysql.jdbc.Driver

  3. 引导类设置

    &#64;SpringBootApplication
    public class Springboot12ConfigurationApplication {&#64;Bean&#64;ConfigurationProperties(prefix &#61; "datasource")public DruidDataSource dataSource() {DruidDataSource dataSource &#61; new DruidDataSource();// dataSource.setDriverClassName("123");return dataSource;}public static void main(String[] args) {ConfigurableApplicationContext run &#61; SpringApplication.run(Springboot12ConfigurationApplication.class, args);ServerConfig bean &#61; run.getBean(ServerConfig.class);DruidDataSource druidbean &#61; run.getBean(DruidDataSource.class);System.out.println(druidbean.getDriverClassName()); // com.mysql.jdbc.DriverSystem.out.println(bean);}
    }

    可以在对象里面自定义设置set的值&#xff0c;也可以通过&#64;ConfigurationProperties(prefix &#61; "datasource")注解绑定


比较

// 具体的做属性绑定&#xff0c;必须有&#96;&#64;Component&#96;注解设置bean
&#64;ConfigurationProperties(prefix &#61; "datasource")

// 开启属性绑定&#xff0c;并设置bean&#xff0c;如果类里面也使用了&#96;&#64;Component&#96;注解设置bean那么就要去掉&#xff0c;否则会报2个bean的错误
&#64;EnableConfigurationProperties(ServerConfig.class)

Exception in thread “main” org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.zcl.config.ServerConfig’ available: expected single matching bean but found 2: serverConfig,servers-com.zcl.config.ServerConfig


关于springboot注解报错提示的解决方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUJPhCW9-1653524590741)(images/31、springboot注解报错.png)]

导入依赖坐标


<dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-configuration-processorartifactId>
dependency>

宽松绑定

&#64;ConfigurationProperties(prefix &#61; “datasource”)绑定的属性名支持属性名宽松绑定

入下属性

// &#64;Component
&#64;Data
&#64;ConfigurationProperties(prefix &#61; "servers")
public class ServerConfig {private Integer port;private String ipAddress;private long timeout;
}

在配置文件中如下的写法都可以获取到值绑定到ipAddress属性上

支持如下格式&#xff1a;

  1. 驼峰模式
  2. 下划线模式
  3. 中划线模式
  4. 常量模式

servers:port: 8080// ipAddress: 198.168.0.1 # 驼峰// ipaddress: 198.168.0.1// ip_address: 198.168.0.1 # unline// ip-address: 198.168.0.1 # 烤肉串模式// IP_ADDRESS: 198.168.0.1 # 常量ip_A-d_dr_ess: 198.168.0.1timeout: -1

注意&#xff1a;

宽松绑定不支持注解&#64;Value引用单个属性的方式

&#64;ConfigurationProperties(prefix &#61; “datasource”)绑定前缀命名规范&#xff1a;仅能使用纯小写字母、数字、下划线作为合法的字符

2、常用计量单位应用


JDK8支持的时间与空间计量单位

配置文件设置如下&#xff1a;

servers:port: 8080ip-address: 198.168.0.1timeout: -1serverTimeOut: 3dataSize: 1024

上面设置了一个时间单位和存储大小&#xff0c;二如果不指定的话我们就不知道指定的单位是上面&#xff0c;会造成很大的困惑&#xff0c;所以需要如下设置进行指定

// &#64;Component
&#64;Data
&#64;ConfigurationProperties(prefix &#61; "servers")
public class ServerConfig {private Integer port;private String ipAddress;private long timeout;// 默认是毫秒&#xff0c;指定为消失&#64;DurationUnit(ChronoUnit.HOURS)private Duration serverTimeOut; // serverTimeOut&#61;PT3H// 默认的b字节大小&#xff0c;修改&#64;DataSizeUnit(DataUnit.KILOBYTES)private DataSize dataSize; // dataSize&#61;1048576B
}

Bean属性校验


导入校验框架


<dependency><groupId>javax.validationgroupId><artifactId>validation-apiartifactId>
dependency>

<dependency><groupId>org.hibernate.validatorgroupId><artifactId>hibernate-validatorartifactId>
dependency>

在属性实体类上面开启Bean校验功能

/*** 项目名称&#xff1a;SpringBootProject* 描述&#xff1a;属性类** &#64;author zhong* &#64;date 2022-05-26 6:35*/
// &#64;Component
&#64;Data
&#64;ConfigurationProperties(prefix &#61; "servers")
// 设置校验规则
&#64;Validated
public class ServerConfig {&#64;Max(value &#61; 8888,message &#61; "设置的最大值不可超过8888")&#64;Min(value &#61; 10,message &#61; "最小值不能低于10")private Integer port;private String ipAddress;private long timeout;// 默认是毫秒&#xff0c;指定为消失&#64;DurationUnit(ChronoUnit.HOURS)private Duration serverTimeOut; // serverTimeOut&#61;PT3H// 默认的b字节大小&#xff0c;修改&#64;DataSizeUnit(DataUnit.KILOBYTES)private DataSize dataSize; // dataSize&#61;1048576B
}

在配置文件中修改最大值

servers:port: 9999

当出现超出最大值的时候&#xff0c;会出现如下的错误消息

Property: servers.port
Value: 9999
Origin: class path resource [application.yml] - 2:9
Reason: 设置的最大值不可超过8888


进制数据转换规则


如果是传递字符串类型的&#xff0c;要使用“ ”包裹&#xff0c;否则可能会出现进制转换


推荐阅读
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Java值传递机制的说明及示例代码
    本文对Java值传递机制进行了详细说明,包括形参和实参的定义和传递方式,以及通过示例代码展示了交换值的方法。 ... [详细]
author-avatar
唐旭阳一一一滴泪15
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有