目录
前言
1.参数配置化
1.1使用application.properties
2.yml配置文件
3.@ConfigurationProperties
3.1@ConfigurationProperties
4.总结
前言
我们在配置一个类的对象属性时如果我们直接写在类里就属于硬编码,如果我们在做项目时每设计到一个第三方服务就将其参数硬编码在java代码中:不便维护和管理
- 1.如果参数发生变化需要改动这些参数,然后重新进行代码的编译,将java代码编译成class字节码文件,然后再重新运行比较繁琐
- 2.如果我们开发的是一个java企业级项目,这些类很多,如果将这些参数分散定义在java类中,如果我们需要修改一个参数值就需要在众多java代码中定位到对应位置,然后修改参数,重新编译。
1.参数配置化
Spring Boot 参数配置化,核心在于将应用程序的配置参数与代码进行分离,通过外部配置文件或其他方式来管理这些参数。不再以硬编码的形式存在于代码中,而是存储在application.properties或application.yml等配置文件里。
- 这种分离机制使得我们在不修改代码的情况下,就能对应用程序的行为进行灵活配置。
- 只需修改配置文件,无需重新编译和部署整个应用程序,极大地提高了开发和运维的效率。
1.1使用application.properties
这是 Spring Boot 最常用的配置方式。在application.properties文件中,配置参数以key=value的形式存在
@Value注解通常用于外部配置的属性注入,具体用法为:@Value("${配置文件的key}")
2.yml配置文件
在 Spring Boot 应用中,
application.yml
是常用的配置文件,相比application.properties
,它以简洁的层级结构展示配置信息,更易于阅读和维护。基本语法:
- 大小写敏感
- 数值前必须有空格,作为分割符
- 使用缩进表示层级关系
- 缩进空格数目不重要,只要相同层级元素左侧对齐即可
- #表示注释,这个字符一直到行尾,都会被解析器忽视
yml使用冒号 : 分隔键和值,并且冒号后面必须紧跟一个空格,这是语法的基本要求。例如:
server 是键,其值是一个包含 port 键值对的子对象。缩进在 yml 中至关重要,它用于表示层级关系,同一层级的元素必须保持相同的缩进量。这种通过缩进构建层级结构的方式,避免了像 XML 或 JSON 那样使用大量括号或标签,让配置文件的结构一目了然。
3.@ConfigurationProperties
@Value 注解每次只能绑定一个配置属性,当配置项较多时,代码会变得冗长繁琐。例如,若有一个数据库连接配置,包含endpoint、accesskeyid、accesskeysecret、bucketname 等多个属性,使用 @Value 注解需要多次编写代码:
这种方式缺乏结构化,难以直观体现配置属性之间的关联关系,不利于维护和管理。而且代码比较繁琐和臃肿。
所以springboot给我们提供了一种更为简便的方式ConfigurationProperties。
3.1@ConfigurationProperties
@ConfigurationProperties
作为 Spring Boot 中强大的配置绑定工具,其优势贯穿于代码结构优化、功能实现便捷性以及项目可维护性提升等多个层面。
- 结构化配置绑定,增强代码可读性:
@ConfigurationProperties
能够将配置文件中一组相关属性绑定到一个 Java 类,构建结构化的配置对象。比如在数据库连接配置中,把url
、username
等属性封装在一个类中,通过@ConfigurationProperties(prefix = "spring.datasource")
一次绑定完成。相较于@Value
逐个绑定属性,这种方式使代码结构清晰明了,直观展现配置属性间的关联,方便开发人员理解与维护,也便于对整个配置对象进行操作。- 便捷的批量操作与动态配置更新:
@ConfigurationProperties
让配置属性的批量处理变得简单易行,通过注入配置类实例,可在代码中对整个配置对象进行操作,实现多个属性值修改或传递。- 自动类型转换与高效校验支持:该注解具备自动类型转换能力,能依据配置文件与目标类的属性类型,自动完成合理转换,如将字符串日期转换为
java.util.Date
类型。
4.总结
Spring Boot 参数配置化是一种强大而实用的技术,它通过将配置与代码分离,为应用程序带来了更高的灵活性、可维护性和可扩展性。无论是简单的配置修改,还是复杂的多环境管理,Spring Boot 都提供了丰富多样的配置方式来满足我们的需求。掌握参数配置化技术,能够让我们在 Spring Boot 开发中更加得心应手,轻松应对各种配置需求。