java 如何编写配置文件-java函数的编写
SpringBoot的配置文件
一、SpringBoot配置文件分类
SpringBoot 是基于约定的,很多配置都是默认的(主方法上@SpringBootApplication注解的子注解@EnableAutoConfiguration实现的,是在META-INF/spring.factories中的自动配置了,可以看狂神的的解释,它是boot2解析,boot3里面实现用的更多的是流(Stream),其他没怎么变)。
但是如果想使用自己的配置替换默认配置或添加其他配置的话,可以使用application.properties或者application.yml(application.yaml)进行配置。
遵循框架的规则,默认配置文件名称:application在同一级目录下的优先级:properties>yml>yaml,这个如果没看源码也可以通过测试得出。 二、yaml 概述
首先需要明白的yaml是一种语言,是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。百度上解释是它是以数据作为中心,而不是以标记语言为重点!.yml 是用YAML语言编写的配置文件,YAML的诞生是参考JSON,XML和SDL等语言。
居然是语言,就有它的语法、格式。
下面给出是.yml配置文件的案例:
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number: 34
street: Main Street
city: Nowheretown
zipcode: 12345
注意:
下面写一个 application.yml 配置文件,进行测试
server:
port: 9000 #修改端口号
servlet:
context-path: /xxx #修改上下文路径
需要注意的是,它还可以进行参数引用,使用${??},例如:
port: 9001
server:
port: ${port}
servlet:
context-path: /xxx
.properties小编觉得应该都会用,就不多写了,yml是被推荐的配置方式,更直观吧。
三、多环境配置
在项目进行过程中,除了有开发环境,还有测试环境,上线环境等。每个环境有不同的配置信息,例如端口,上下文件,数据库的urljava 如何编写配置文件,用户名、密码等等。
使用多环境配置文件,可以方便的切换不同的配置。
使用方式:创建多个配置文件,名称规则:application-环境名称.properties(yml)
例如:
创建开发环境的配置文件:application-dev.properties(application-dev.yml)
创建测试使用的配置文件:application-test.properties(application-test.yml)
配置下面的语句就可以实现环境切换:
.yml:
spring:
profiles:
active: 环境名称
.properties
spring.profiles.active=环境名称
测试:
准备好了三个配置文件
application.yml的内容
spring:
profiles:
active: dev
server:
port: 8080
application-dev.yml的内容
server:
port: 9001
servlet:
context-path: /yyy
测试结果
可以观察出:环境进行了切换后java 如何编写配置文件,application.yml中的后面内容不起效.
四、@Value 和 @ConfigurationProperties
下面是application.yml配置。
server:
port: 8082
servlet:
context-path: /demo
# 配置key=value
school:
name:
- 合肥师范
- 武汉大学
address: 合肥
如果直接这样,那么配置文件中的name注入不进去(会为null),因为配置文件中的是多成员。
如果是这样那么就可以注入成功。数组也是可以的。
注意:@ConfigurationProperties 注解的使用,一定要记得要对 prefix属性进行赋值(默认是空字符串) ,它会在配置文件中查询 prefix 这个元素,然后进行“映射”。
下面可以看看狂神说这个图,对@Value和@ConfigurationProperties进行个对比
五、总结
小编写的这篇博客没有对properties配置进行说明,其实用法是一样的。而且SpringBoot官方推荐我们使用yaml进行配置,所以这里讲解和例子都是用的yml配置。
如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;
如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@ConfigurationProperties,不要犹豫!因为它不单单可以做到简单类型的映射。
推荐文献: