(SpringBoot教程三)关于配置⽂件application.properties和
apachestruts2a。。。
之前我们使⽤的⽅法是通过IDEA中的maven创建⽅式进⾏Spring Boot项⽬搭建,主要是希望能够通过⼿动加⼊必要的依赖,让初学者对于Spring Boot项⽬中的依赖应⽤有⼀个更深⼊的了解。其实,我们还可以更加快速地搭建Spring Boot项⽬,只需要使⽤IDEA中的Spring Initializr创建项就可以,详见
⽬录
⼀、基础介绍
Spring Boot中使⽤全局配置⽂件对项⽬的默认配置进⾏修改,⽐如设置端⼝号。通常路径为“src->main->resources-
>application.properties”,如果你的项⽬是使⽤Spring Initializr创建项进⾏创建,那么路径就⼀定是这个。⼀般情况下,项⽬可以有多个配置⽂件,Spring Boot项⽬会把resources下的".properties"和".yml"⽂件读⼊进⾏配置。
但是,“.properties”⽂件的语法写起来有很多重复,所以这⾥推荐在这⾥将“application.properties”替换
成“l”。“.yml”⽂件时YAML语⾔,这个语⾔以数据为中⼼,更加容易编写,更适合作为配置⽂件。⼆者的语法都不难理解,这篇博客中会介绍到这两种语法。
以往我们主要使⽤.xml⽂件作为配置⽂件,下⾯我们来对⽐⼀下这三种⽂件在配置端⼝号上有什么语法上的不同,我们将端⼝号从默认的8080改成8081。
(1)xml⽂件,代码如下:
<server>
<port>8081</port>
</server>
(2)properties⽂件,代码如下:
server.port=8081
(3)yml⽂件,代码如下:
server:
port: 8081
可以看出xml的确在配置上需要更多的代码。有的同学看到这⾥觉得,.properties貌似⽐.yml更简练,但是如果在对server的多个属性进⾏配置时,yml差异就体现出来了。
⼆、YAML语法和.properties⽂件语法
1、YAML基本语法:基本有3点
(1)采⽤“key: value”的键值对形式进⾏设置,注意“:”和“value”之间必须使⽤空格隔开
(2)使⽤缩进表⽰层级关系,缩进使⽤空格⽽⾮TAB。空格多少⽆所谓,相同层级需要左对齐
(3)属性和值的⼤⼩写敏感
其实我们使⽤IDEA的时候,第⼀点,如果你没有在value前设置空格,关键字就是普通的⿊⾊或者灰⾊,使⽤空格之后,就会变成关键字的橙⾊。第⼆点IDEA都会帮你完成,它会⾃动帮你缩进,并通过空格设置缩进的⼤⼩,通常使⽤两个空格。只需要注意⾃⼰在编写代码的时候会不会不⼩⼼删除空格就可以了。
2、YAML值的写法,也就是我们value都可以填什么类型的变量数据库int类型长度
(1)字⾯量:数字、字符串、布尔。通常数字直接写就可以,布尔类型需要⼩写(true/false),字符串使⽤单引号或者双引号。如果使⽤单引号,输出特殊字符时不会转义,⽐如,'\n'输出的内容就是\n;⽽双引号则会转义,“\n”输出的内容就是⼀个回车。
(2)对象、Map:键值对。对象仍然使⽤“key: value”键值对的⽅式进⾏值的录⼊,对象可作为某个key的value。这样说有点不⽅便理解,我们可以通过⼀个例⼦来更加形象地看出来。我们表⽰⼀个student类型,有两种写法,⼀种多⾏的,⼀种是⾏内的。⾏内写法需要⽤⼤括号括起来。
#多⾏写法
student:vbs脚本执行cmd命令
name: "Li Ming"
age: 18
#单⾏的⾏内写法
student: {name: "Li Ming",age: 18}
(3)数组:List、Set。与对象相似,同样有单⾏和多⾏的写法,多⾏⽤“- 值”的形式来表⽰数组中的⼀个元素,注意,值前同样有⼀个空格;单⾏写法不⽤“-”,使⽤中括号将所有值括起来,值之间使⽤“,”隔开。仍然举个例⼦。
#多⾏写法
person:
- manproperties文件用什么打开
- women
#单⾏的⾏内写法
person: [man,women]
3、.properties语法:.properties⽂件的编码是,⼜称为Latin-1。从语法上来讲,有前⾯的yaml语法作为基础知识,这⾥就更容易理解。我们先在下⾯列出代码,可以看出这⾥使⽤“=”进⾏对“类.变量”赋值,赋值内容与yml⼀样,都包括字⾯量、数组、对象。对于字⾯量中的字符串规则与yml⼀样;⽽数组,我们这⾥不需要使⽤“[]”,直接使⽤英⽂逗号隔开就可以;对象也可以作为类的⼀个变量,同样使⽤“.”将对象与对象⾥的变量隔开。
student.name=zg
student.isfemale=true
student.birth=2014/4/1
student.pets.age=2
student.pets.spices=dog
4、当有多个配置⽂件时
(1).yml⽂件:.yml配置⽂件可以在四个位置,这⾥以l为例。如下,按照优先级由⾼到低进⾏展⽰。也就是如果下⾯的四个⽂件夹分别有四个l,其中都对⼀个bean的⼀个变量进⾏配置,系统会使⽤“项⽬主⽬录->config-&l”内的数据。
项⽬主⽬录->config-&l
项⽬主⽬录->src-&l
项⽬主⽬录->src->main->resources->config-&l
项⽬主⽬录->src->main->resources-&l
夜巡 伦勃朗 作品赏析200字当我们需要在同⼀路径下有多个YAML⽂件进⾏配置,那么YAML⽂件的名字必须以“application”开头,并以“-”进⾏连接,⽐
如“l”。并且我们需要在l中对其他YAML⽂件进⾏声明,这样Spring Boot就知道我们要使⽤的YAML⽂件是什么了。如果这类的配置⽂件与主配置⽂件l产⽣冲突,以当前⽂件内容优先。
声明的代码:
spring:
吃了曲舍林感觉要疯profiles:
include: student
(2).properties⽂件:与YAML⽂件相似,我们在⼀个项⽬中可以有多个.properties⽂件,但名字没有限制。我们需要在类⽂件中类名前使⽤@PropertySource进⾏注解。举个例⼦如果我们定义⼀个“student.properties”专门⽤于配置student的⼀些内容,那么在Student.java⾥我们需要加上注解,如下
//到所有配置⽂件中以"student"开头的内容进⾏配置
@ConfigurationProperties(prefix="student")
@PropertySource(value = {"classpath:student.properties"})
public class Student {
@PropertySource可以帮助我们使⽤多个额外的.properties配置⽂件,具体的细节,请⼤家在我们的Spring Boot教程四中查看。
(3)如果赋值的内容需要随机数或者需要其他项的值,我们可以使⽤“${}”来获取,⽐如下⾯的代码为pets的age赋值⼀个随机整数,并将teacher数组中的第⼀个值“zhang”放到pet的spices属性中。
student:
birth: 2019/04/11
teachers: [zhang,wang]
grade: {English: 87, Math: 100}
pets:
spices: ${achers[0]}-dog
age: ${random.int}
random可以调⽤的⽅法以及他们的解释有如下的⼏种,基本上都是看到名字就能够猜到他们是做什么的:random.int:随机⽣成整数
random.int(value,max):在指定范围随机⽣成整数
random.long:随机⽣成long型整数
random.long(value,max):在指定范围随机⽣成long型整数
random.uuid:随机⽣成128位uuid随机码
random.value:随机⽣成⼀个长度为32的数字和⼩写字母组成的⼀个字符串。
三、项⽬实践
下⾯我们将通过构建⼀个项⽬,来看⼀下Spring Boot如何在配置⽂件中⾃动为Bean的属性配置值。
1、⾸先我们需要快速构建⼀个Spring Boot项⽬。如果有的同学对这部分很熟,请跳过。
(1)新建项⽬,选择Spring Initializr,确认项⽬的SDK是不是本地的你为你的电脑配置的SDK。
(2)输⼊Group和Artifact名字
(3)选择模板进⾏添加,我们添加web模板
(4)删除项⽬中不⽤的多余的项,使项⽬结构更加地整洁。
(5)我们在项⽬中添加l⽂件,打开src->main->resources⽬录,右键点击resources->new->File,输
⼊“l”添加新的配置⽂件。这⾥可以不⽤把application.properties⽂件删除,因为之后我们还将通过项⽬对这两个⽂件进⾏相同操作从⽽进⾏对⽐。
(6)注意IDEA右下⾓的提⽰,选择⾃动配置:
2、构建bean;在com.springboot.application下⾯新建⼀个bean⽂件夹,同时在这个⽂件夹下建⽴两个类⽂件:Pet和Student。
(1)新建⽬录和Pet可以同时进⾏,如下。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论