《SpringBoot应用开发》节选知识归纳

单元二 SpringBoot核心配置


前言

SpringBoot遵循“约定优于配置”的理念,使用自动配置和自定义的Java配置类代替传统的XML的配置方式,在实际开发中,我们只需要写很少的配置即可。本单元以某公司资产管理系统的核心配置为基础,介绍SpringBoot的默认配置文件、自定义配置、引用外部配置文件、多环境配置等相关知识。


  • 知识目标

  1. 熟悉SpringBoot中的两种格式的配置文件
  2. 掌握SpringBoot的基础注解
  3. 了解自定义配置
  4. 熟悉多环境配置

    一、默认配置文件

1.Spring Boot的自动配置,免除了大部分的手动配置,但是对于一些特定的情况,还是需要我们进行自定义配置,对默认的配置进行修改,以适应实际的生产情况。
在Spring Boot中,配置文件有两种不同的格式,分别为application.
properties 和 application.yml(或 application.yaml),放在指定目录下的配置文件会被Spring Boot自动加载,免去了我们手动加载的烦恼。放置配置文件的常见目录为src/main/resources。(1)application.properties 配置文件
我们在使用Spring Initializer 创建一个Spring Boot项目时,会在resources目录下默认创建一个application.properties 配置文件,可以在该文件中进行项目的相关属性配置,包括系统属性、缓存、邮件、数据、事务、服务等各方面配置。Spring Boot的配置属性、默认值、描述等信息,可以在Spring的官网文档中查看。
application.properties 是一种常用的配置文件,文件扩展名为“properties”,属于文本
文件,文件内容的基本语法格式是“key=value”的格式,用“#”作为注释的开始。
如要配置Web服务访问的端口和上下文路径,则基本的配置代码如下。

代码如下(示例):

server.port=8081
server.servlet.contest-path=/mytest

(2)application.yml配置文件
在Spring Boot中,还可以使用YAML格式的配置文件,这是官方推荐使用的配置格
式,可以通过官网了解其详细介绍。
先来认识一下YAML。YAML是一个类似XML、JSON的标记性语言,强调以数据为
中心,并不是以标识语言为重点,本质上是一种通用的数据串行化格式。
YAML的基本语法规则如下。
.大小写敏感,即区分大小写。
•key:value 表示键值对关系,冒号后面、value之前必须有一个空格。
.使用空格缩进表示层级关系,左对齐的数据位于同一层级。
不允许使用Tab键缩进。
•使用“#”进行单行注释。
如要配置 Web 服务访问的端口和上下文路径,YAML格式配置文件的配置代码如图
所示。
代码如下(示例):

1 server:
  2 port: 8081
    servlet;
3 context-path:/ymltest

YAML中支持的数据结构主要有纯量、对象、数组3种。
纯量(scalar)是指基本的、不可再分的值,包括整数、浮点数、字符串、布尔值、日期时间、NULL等。字符串有3种表示形式:不用引号、使用单引号或使用双引号。一般不用引号直接写出字符串。若不用引号或使用单引号,则转义字符(如“\n”)将被当成普通字符串处理;若使用双引号,则会将“1n”这类转义字符处理成换行。在YAML格式的文件中使用不同形式表示字符串,在其值注入Bean中后,再获取输出结果。

对象是键值对的集合,又称为映射(mapping)/哈希(hash),表示形式有两种:缩进写法和行内写法。若给用户对象用户名和年龄值,使用缩进写法的代码如下。

user:
   name:张三
   age:20

若用行内写法,代码如下。

user: {name:张三,age:20}

数组是一组按次序排列的值,又称为序列(sequence)/列表(list)。若给用户对象设置朋友关系,该用户有两个朋友,使用缩进写法代码如下。

user:
    name:张三
    age:20
    friends:
        _李四
        _王五

这里用连续符加一个空格表示数组或列表的一个项,连续符后的空格不能少。若用行内写法,则代码如下。

user:
   name:张三
    age:20
    friends:[李四,王五]

在YAML格式的配置文件中,每个结构又可以嵌套组成复杂的结构。如对象中可以继续使用对象,数组的元素又是一个数组。若用户的有两个朋友,这两个朋友对象描述,则friends所对应的是一个用户对象列表,使用缩进的代码如下。

user:
   name:张三
    age:20
 friends:
 -
   name:李四
    age:18

 -
   name:王五
     age:20

代码中的两个连接符表示friends中有两个元素,这两个元素是用户对象,分别用于设置用户名和年龄值。若用行内写法,则代码如下。

user:
   name:张三
    age:20
    friends:[{name:李四,age:18},{name:王五,age:20}]

代码中的[]表示列表,{}用来描述键值表,friends中有两个用户对象,使用逗号对两个用户对象的数据进行分隔。

二、注入配置文件属性


Spring Boot 提供了许多配置,其默认提供的配置会自动扫描并读取属性值。但通常情况下我们需要在配置文件中自己定义值,并将值应用到程序中。如将配置文件中的值直接注入实体类中,主要通过一些注解实现,常用的注解有@ConfigurationProperties 和@Value。@ConfigurationProperties 注解一般将配置文件与一个类绑定,将配置文
件中的变量值注入该类的成员变量中;
 

三、自定义配置类

1,在Spring Boot中,通常使用@Configuration 注解定义一个配置类。Spring Boot会自动扫描和识别配置类,从而替换传统Spring 中的XML 配置文件。@Configuration 注解一般作用在类和接口上。
当定义一个配置类后,一般需要在类的方法上使用@Bean注解进行组件配置,方法的返回对象注入Spring 容器中(类似于XML配置文件中的<bean>标签配置),表示当前方法的返回值是一个Bean。Bean的组件名称默认使用方法名,也可以使用@Bean 注解的name或value属性自定义组件的名称。
其实@Configuration 注解的底层就是@Component注解,但@Configuration注解侧重配置,@Component 注解侧重组件,不管侧重点是什么,两者本身都是一个loC容器管理的Bean对象。

2.在实际应用中,不会将所有的配置都写在默认配置文件里,用户可以定义自己的配置文件。若想引用自定义配置文件,可以使用@PropertySource注解指定自定义配置文件的位置和名称,@PropertySource注解默认不支持读取
置文件
YAML配置文件。可以使用注解@Value和@ConfigurationProperties注解获取配置文件中的
配置值,并将其注入类的属性中。

四、引用外部配置文件

在实际开发中,项目真正上线和部署时建议使用外部配置文件,外部配置文件的加载顺序可参考官网描述。这里简单介绍一下常用的外部配置文件的加载方法,可以使用外部JAR包方式读取指定配置文件,通过 spring.config.location 的值来改变默认的配置文件位置。
在项目中引用外部配置文件,基本步骤如下。
①在D盘的config目录下,创建配置文件app.properties。其中设置端口和上下文路
径的代码如下。

server.port=8081
server.servlet.context-path=/outer

②将unit2-1项目打包成JAR包,将target下的JAR包复制到D盘上。
③打开命令提示符窗口,切换到D盘下,执行以下命令。

java -jar unit2-1.0.jar
-spring.config.location=d:/config/app.properties

五、多环境配置

在实际开发中,一套应用程序可能会被安装和应用到几个不同的环境,如开发环境(dev)、测试环境(test)、生产环境(prod)等,每个环境的服务器端口、数据库地址等配置会有差别。那么在不同环境中运行应用程序,是否需要修改配置文件,复制不同的安装包呢? 在Spring Boot中只需要简单的配置,应用程序就能在不同的环境中运行。
多环境配置一般分为以下两步。①定义多环境配置文件。②指定具体运行环境。
在Spring Boot 中要定义多环境配置文件,配置文件名需满足 application-{profile}.yml
的格式,其中{profile}对应的是环境标识,具体如下。
application-dev.yml:开发环境application-test.yml:测试环境。application-prod.yml:生产环境
也可以使用多文档分区方式定义多环境配置文件定义一个配置文件,将多环境配置用文档
分隔符“-”分隔开。
若要使用其中的某一个环境,可以在配置文件application.yml中配置
spring.profiles.active 属性,其值对应S{profle}值,代码如下。

spring:
profiles:
active: dev

这样就告诉Spring Boot,启动时加载开发环境的配置。如果不想在项目中固定环境配置,也可以在项目打包或者运行的时候通过传入环境参数来确定环境配置。如java-jar unit2-1.0.jar --spring.profiles.actvie=dev,通过打包启动命令进行区分会更灵活、方便。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了SpringBoot核心配置的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值