第2章 Spring Boot基本配置_第1页
第2章 Spring Boot基本配置_第2页
第2章 Spring Boot基本配置_第3页
第2章 Spring Boot基本配置_第4页
第2章 Spring Boot基本配置_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章SpringBoot基本配置第2章SpringBoot基本配置2.1SpringBoot配置文件2.2Properties配置2.3YAML配置2.4Profile多环境配置2.5Web容器配置22.1SpringBoot配置文件SpringBoot中采用了大量的自动化配置,在实际项目中不可避免会有一些需要自己手动配置。SpringBoot支持使用Properties和YAML两种配置方式。Properties的优先级要高于YAML(YAML的以“.yml”或“.yaml”为后缀)。使用IntelliJIDEA的SpringInitializr方式创建SpringBoot项目时,IDE默认会在src/main/resources目录下创建一个perties文件,例如:server.port=8088也可以将配置文件perties后缀修改为.yml格式,即文件全名为application.yml,YAML文件的好处是它采用树状结构,例如:3server:port:80882.1SpringBoot配置文件SpringBoot项目中的perties或者application.yml配置文件,可出现在如下4个位置:(1)项目根目录的config目录。(2)项目根目录。(3)项目classpath下的config目录。(4)项目classpath目录。如果这个4个位置中都有perties(.yml)文件,那么加载的优先级从(1)到(4)依次降低,SpringBoot将按照这个优先级查找配置信息,如图2-1所示。如果同一配置项出现在多份配置文件中,后读取的值不会覆盖前面读取的值。42.2Properties配置在perties文件中定义项目的相关属性,这些属性可以是系统属性、环境变量、命令参数等信息,也可以是自定义配置文件名称和位置,示例代码如下:5server.address=80server.port=8088spring.datasource.driver-class-name=

com.mysql.cj.jdbc.Driver

=application2.2Properties配置通过实例讲解perties配置文件具体使用。(1)使用SpringInitializr方式创建一个名为chapter02的项目,包结构为com.yzpc,选择Web依赖。(2)在chapter02项目的com.yzpc包下新建一个entity包,并在该包下新建Pet和Person的实体类。(3)打开项目resources目录下的perties配置文件,添加配置项及值,用于测试获取配置项的值。(4)在测试类Chapter02ApplicationTests中引入Person实体类Bean,通过@Autowired注解将Person作为Bean注入Sprig容器,在contextLoads()方法中输出Person。

运行contextLoads()方法,在控制台正确输出了Person实体类对象,控制台的输出结果如图2-2所示。6packagecom.yzpc.entity;publicclassPet{privateStringtype;privateStringname; //省略属性的getter方法和setter方法

//省略重写的toString()方法}packagecom.yzpc.entity;importperties.ConfigurationProperties;importorg.springframework.stereotype.Component;importjava.util.*;@Component@ConfigurationProperties(prefix="person")publicclassPerson{privateintid;privateStringname;privateListhobby;privateString[]family;privateMapmap;privatePetpet;//省略属性的getter方法和setter方法

//省略重写的toString()方法}person.id=2=Jennyperson.hobby=read,sport,singperson.family=mother,fatherperson.map.key1=value1person.map.key2=value2person.pet.type=cat

=garfieldpackagecom.yzpc;importcom.yzpc.entity.Person;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;@SpringBootTestclassChapter02ApplicationTests{ @Autowired

privatePersonperson; @Test voidcontextLoads(){

System.out.println(person); }

}2.3YAML配置YAML格式是SpringBoot支持的一种JSON超级文件格式,类似于XML,JSON等,采用树状结构,通过配置分层、缩进等格式,来增强配置文件的可读性。这里介绍一下YAML文件针对不同数据类型配置属性的写法,具体如下:(1)value值为普通数据类型

当YAML配置文件中配置的属性值为普通数据类型时,例如数字、字符串、布尔类型时,可直接配置对应的属性值。(2)value值为数组和单列集合

当YAML配置文件中配置的属性值为数组或集合类型时,主要有缩进式写法和行内式写法。(3)value值为Map集合和对象

当YAML文件配置的属性值为Map集合或对象时,YAML配置文件格式同样可分为缩进式和行内式写法。72.3YAML配置在2.2节案例的基础上,使用application.yml配置文件为Person对象赋值,步骤如下:(1)在chapter02项目的resources目录下,新建一个application.yml文件,在该配置文件中设置Person对象的属性值,内容如下所示。

(2)打开项目的测试类Chapter02ApplicationTests,执行测试方法contextLoads(),查看控制台输出结果,具体如图2-3所示。

8

person:id:3

name:王英瑛

hobby:[read,sport,sing]

family:[mother,father]

map:{key1:value1,key2:value2}

pet:{type:cat,name:garfield}2.4Profile多环境配置通常情况下,我们可配置多个配置文件,在不同的环境下进行替换。1.使用Profile文件进行多环境配置

文件名以application-{profile}.properties的格式,其中{profile}对应具体的环境标识。perties:开发环境。perties:测试环境。perties:生产环境。

在perties主配置文件中配置属性,如下:files.active=dev也可以在将项目打成jar包后启动时,在控制台命令行动态指定激活环境配置,命令如下:java-jarxxx.jar--spring.profiles.active=dev92.4Profile多环境配置通过案例演示Profile多环境配置文件的使用,步骤如下:(1)在chapter02项目的resources目录下,分别新建perties、perties和perties多环境配置文件,并在各配置文件中对服务端口进行不同的设置,代码如下:

server.port=8082、server.port=8084、server.port=8086(2)打开resources下的主配置文件perties,配置files.active属性激活开发环境的配置文件,即perties,代码如下:(3)启动项目的启动类Chapter02Application,查看控制台输出,如图2-3所示。10#指定要激活的多环境配置文件

files.active=dev2.5Web容器配置

1.常规配置我们可以在perties主配置文件中对Tomcat做进一步的配置,示例如下:

11server.port=#

服务器端口号,默认8080server.address=#服务绑定的网络地址server.contextPath=#上下文路径server.connectionTimeout=#连接超时时间,-1无限超时server.session.timeout=#session超时时间server.tomcat.basedir=#Tomcat的基本目录,未配置时,默认使用系统的临时目录server.tomcat.redirectContextRoot=#重定向请求server.tomcat.uriEncoding=#编码格式server.tomcat.max-threads=#Tomcat的最大线程数2.5Web容器配置

2.HTTPS配置由于HTTPS安全性较高,在开发中被广泛的使用,像微信公众号、微信小程序等的开发都要使用HTTPS来完成。对于个人开发者而言,一个HTTPS证书的价格还是有点贵,国内一些云服务器厂商提供免费的HTTPS证书。在JDK中提供一个Java数字证书管理工具keytool,在\jdk\bin\目录下,通过这个工具可以生成一个数字证书,命令如下所示:命令的参数意义:-genkey:表示创建一个新的密钥。 -alias:表示keystore的别名。-keyalg:表示使用的加密算法是RSA,-keysize:表示密钥的长度。-keystore:表示生成的密钥存放位置。-validity:表示密钥的有效时间(单位为天)。

12keytool-genkey-aliastomcathttps-keyalgRSA-keysize2048-keystoreyang.p12-validity3652.5Web容器配置

2.HTTPS配置在cmd的命令窗口中,执行命令,在执行过程中,需要输入密钥口令等信息,根据提示输入即可,如图2-4所示。命令执行完成,在当前bin目录下生成一个名为yang.p12的文件,将这个文件复制到我们第1章的chapter01项目的根目录下,而后在perties中做如下配置:13#key-store表示密钥文件名server.ssl.key-store=yang.p12#key-alias表示密钥别名server.ssl.key-alias=tomcathttps#key-store-password表示在cmd命令执行过程中输入的密码

server.ssl.key-store-password=1234562.5Web容器配置

2.HTTPS配置

配置完成后,启动项目,在Chrome浏览器中输入https://localhost:8088/hello,这时可以看见证书是自己生成的,不被浏览器认可,如图2-5所示。点击左下角的“高级”按钮,出现拦截原因的界面,如图2-6所示。提示:对于不同浏览器,拦截的形式和提示不一样。

此时点击“继续前往localhost(不安全)”的链接,成功运行的结果如图2-7所示。

以HTTP的形式进行问,即访问http://localhost:8088/hello,就会访问失败,如图2-8所示。142.5Web容器配置

2.HTTPS配置由于SpringBoot不支持同时在配置中启动HTTP和HTTPS,这个时候可以配置请求重定向,将HTTP请求重定向为HTTPS请求。此时在chapter01项目的com.yzpc.chapter01的包下创建一个TomcatConfig类来实现Tomcat配置,代码如下:

重新启动项目,控制台信息,如图2-9所示。

在浏览器中输入http://localhost:8080/hello,会自动重定向到https://localhost:8088/hello。15@Configuration

publicclassTomcatConfig{

@Bean

TomcatServletWebServerFactorytomcatServletWebServerFactory(){

TomcatServletWebServerFactoryfactory=newTomcatServletWebServerFactory(){

@Override

protectedvoidpostProcessContext(Contextcontext){

SecurityConstraintconstraint=newSecurityConstraint();

constraint.setUserConstraint("CONFIDENTIAL");

SecurityCollectioncollection=newSecurityCollection();

co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论