版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4讲SpringBoot基本配置Spring框架是一个轻量级的开源JavaEE框架,在企业开发中被广泛应用SpringBoot帮我们简单、快速地创建一个独立的、生产级别的Spring应用大多数SpringBoot应用只需要编写少量配置即可快速整合Spring框架以及第三方框架直接嵌入Tomcat、Jetty或Undertow(无需部署war包)提供可选的starter,简化应用整合按需自动配置Spring以及第三方库为每一种场景准备了一个场景启动器每个场景的配置都会自动配置好,简化配置、整合、部署约定大于配置:每个场景都有很多默认配置2第4讲SpringBoot基本配置SpringBoot配置文件Properties配置YAML配置Profile多环境配置Web容器配置34.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文件的好处是它采用树状结构,例如:4server:port:80884.1SpringBoot配置文件SpringBoot项目中的perties或者application.yml配置文件,位置:如图所示。如果同一配置项出现在多份配置文件中,后读取的值会覆盖前面读取的值。54.2Properties配置在perties文件中定义项目的相关属性,这些属性可以是系统属性、环境变量、命令参数等信息,也可以是自定义配置文件名称和位置,示例代码如下:6server.address=80server.port=8088spring.datasource.driver-class-name=
com.mysql.cj.jdbc.Driver
=application4.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所示。7packagecom.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); }
}4.3YAML配置YAML格式是SpringBoot支持的一种JSON超级文件格式,类似于XML,JSON等,采用树状结构,通过配置分层、缩进等格式,来增强配置文件的可读性。这里介绍一下YAML文件针对不同数据类型配置属性的写法,具体如下:(1)value值为普通数据类型
当YAML配置文件中配置的属性值为普通数据类型时,例如数字、字符串、布尔类型时,可直接配置对应的属性值。(2)value值为数组和单列集合
当YAML配置文件中配置的属性值为数组或集合类型时,主要有缩进式写法和行内式写法。(3)value值为Map集合和对象
当YAML文件配置的属性值为Map集合或对象时,YAML配置文件格式同样可分为缩进式和行内式写法。84.3YAML配置在2.2节案例的基础上,使用application.yml配置文件为Person对象赋值,步骤如下:(1)在chapter02项目的resources目录下,新建一个application.yml文件,在该配置文件中设置Person对象的属性值,内容如下所示。
(2)打开项目的测试类Chapter02ApplicationTests,执行测试方法contextLoads(),查看控制台输出结果,具体如图2-3所示。
9
person:id:3
name:王英瑛
hobby:[read,sport,sing]
family:[mother,father]
map:{key1:value1,key2:value2}
pet:{type:cat,name:garfield}4.4Profile多环境配置通常情况下,我们可配置多个配置文件,在不同的环境下进行替换。1.使用Profile文件进行多环境配置
文件名以application-{profile}.properties的格式,其中{profile}对应具体的环境标识。perties:开发环境。perties:测试环境。perties:生产环境。
在perties主配置文件中配置属性,如下:files.active=dev也可以在将项目打成jar包后启动时,在控制台命令行动态指定激活环境配置,命令如下:java-jarxxx.jar--spring.profiles.active=dev104.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所示。11#指定要激活的多环境配置文件
files.active=dev4.5Web容器配置
1.常规配置我们可以在perties主配置文件中对Tomcat做进一步的配置,示例如下:
12server.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的最大线程数4.5Web容器配置
2.HTTPS配置由于HTTPS安全性较高,在开发中被广泛的使用,像微信公众号、微信小程序等的开发都要使用HTTPS来完成。对于个人开发者而言,一个HTTPS证书的价格还是有点贵,国内一些云服务器厂商提供免费的HTTPS证书。在JDK中提供一个Java数字证书管理工具keytool,在\jdk\bin\目录下,通过这个工具可以生成一个数字证书,命令如下所示:命令的参数意义:-genkey:表示创建一个新的密钥。 -alias:表示keystore的别名。-keyalg:表示使用的加密算法是RSA,-keysize:表示密钥的长度。-keystore:表示生成的密钥存放位置。-validity:表示密钥的有效时间(单位为天)。
13keytool-genkey-aliastomcathttps-keyalgRSA-keysize2048-keystoreyang.p12-validity3654.5Web容器配置
2.HTTPS配置在cmd的命令窗口中,执行命令,在执行过程中,需要输入密钥口令等信息,根据提示输入即可,如图2-4所示。命令执行完成,在当前bin目录下生成一个名为yang.p12的文件,将这个文件复制到我们第1章的chapter01项目的根目录下,而后在perties中做如下配置:14#key-store表示密钥文件名server.ssl.key-store=yang.p12#key-alias表示密钥别名server.ssl.key-alias=tomcathttps#key-store-password表示在cmd命令执行过程中输入的密码
server.ssl.key-store-password=1234564.5Web容器配置
2.HTTPS配置
配置完成后,启动项目,在Chrome浏览器中输入https://localhost:8088/hello,这时可以看见证书是自己生成的,不被浏览器认可,如图2-5所示。点击左下角的“高级”按钮,出现拦截原因的界面,如图2-6所示。提示:对于不同浏览器,拦截的形式和提示不一样。
此时点击“继续前往localhost(不安全)”的链接,成功运行的结果如图2-7所示。
以HTTP的形式进行问,即访问http://localhost:8088/hello,就会访问失败,如图2-8所示。154.5Web容器配置
2.HTTPS配置由于SpringBoot不支持同时在配置中启动HTTP和HTTPS,这个时候可以配置请求重定向,将HTTP请求重定向为HTTPS请求。此时在chapter01项目的com.yzpc.chapter01的包下创建一个TomcatConfig类来实现Tomcat配置,代码如下:
重新启动项目,控制台信息,如图2-9所示。
在浏览器中输入http://localhost:8080/hello,会自动重定向到https://localhost:8088/hello。16@Configuration
publicclassTomcatConfig{
@Bean
TomcatServletWebServerFactorytomcatServletWebServerFactory(){
TomcatServletWebServerFactoryfactory=newTomcatServletWebServerFactory(){
@Override
protectedvoidpostProcessContext(Contextcontext){
SecurityConstraintconstraint=newSecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollectioncollection=newSecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
factory.addAdditionalTomcatConnectors(createTomcatConnector());
returnfactory;
}privateConnectorcreateTomcatConnector(){
Connectorconnector=newConnector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8088);
returnconnector;
}
}perties文件和pom.xml文件的区别1)文件存放位置不同:pom.xml文件是存放在整个项目的根目录之下,和src文件夹同级;perties文件是放在:项目名/src/main/resources文件夹中;2)作用不同:pom.xml文件是所有maven项目必须存在的配置文件,该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等;(maven是一个跨平台的项目管理工具。)perties文件是一个springBoot框架下的核心配置文件17application.properties配置文件的作用perties是SpringBoot框架中的一个全局的配置文件,是核心配置文件。这个配置文件主要用来配置数据库的连接,日志相关配置,以及以下功能:1)自定义属性与加载:[在配置文件中自定义属性后,可以通过@Value("${属性名}")注解加载对应的配置属性]2)参数间的引用:可以通过${属性名称}来调用属性值]3)使用随机数:可以通过${}类似的写法赋予属性随机数的特性4)通过命令行设置属性值5)多环境配置18Java代码中是无法直接读取pom.xml中的内容的,需要先把值转到xxx.properties中,再通过程序读取perties中对应的值SpringBoot使用了一个全局的配置文件perties,放在src/main/resources目录下或者类路径的/config下。SpingBoot的全局配置文件的作用是对一些默认配置的配置值进行修改。19什么是groupid和artifactId?groupId:group意思为组,所以理解为是组织Id,也是公司Id,是项目组织唯一的标识符,用于标识同一个组织或公司的项目artifactId:即一个具体的项目groupId和artifactId的存在是为了定位到你的项目,所以它们充当着坐标的角色artifactId的作用是标识一份具体的功能或模块,不同的artifactId代表不同的组件或依赖项,方便进行依赖管理和版本控制20@SpringBootApplication标注的类就是主程序类SpringBoot只会扫描主程序所在的包及其下面的子包如果放在其它包,可用注解@SpringBootApplication(scanBasePackages=“xxx.yyy.zzz”)自定义扫描路径。21SpringBoot的配置文件有两种:一种是properties结尾的,一种是yaml或者yml文件结尾的正常的情况是先加载yml,接下来加载properties文件。如果相同的配置存在于两个文件中。最后会使用properties中的配置。最后读取的优先集最高。properties配置文件属于早期,而yml可以看做是对properties配置文件的升级yaml是springboot官方推荐的配置文件方法22properties的基本语法格式是“key=value”的形式yml的基本语法格式是“key:value”的形式yml是YAML是缩写,它的全称YetAnotherMarkupLanguage,翻译成中文是“另一种标记语言”。yml除了可以很好的配置基础数据类型之外,它还可以很方便的配置对象、集合等多种数据类型;yml支持多种语言、通用性更好。properties格式的配置文件只适用于SpringBoot项目,也就是只适用于Java语言,而yml支持更多的开发语言,它可以用在Java、PHP、Python、Ruby、JavaScript、Perl、Golang等语言中。2324配置文件与Profile假设存在如下所示的配置文件集合:perties//生产环境perties//测试环境perties//开发环境perties//预发布环境perties//全局配置文件这里有一个全局的配置文件和多个局部Profile配置文件可以在perties中使用如下配置方式来激活当前使用的Profilefiles.active=test25如果使用yml文件,则可以使用如下配置方法spring:profiles:active:test也可以同时激活几个Profilefiles.active:prod,myprofile1,myprofile226如果想把所有的Profile配置信息保存在一个文件也是支持的spring:profiles:test//test环境相关配置信息spring:profiles:prod//prod环境相关配置信息还可以在命令行使用—files.active参数java–jarxxx.jar–files.active=prod27代码控制与ProfileProfile这一概念的应用场景还包括动态控制代码执行流程可以使用@Profile注解@ConfigurationpublicclassDataSourceConfig{@Bean@Profile(“dev”)publicDataSourcedevDataSource(){//创建dev环境下的DataSource}}@Bean@Profile(“prod”)publicDataSourceprodDataSource(){//创建prod环境下的DataSource}28在开发过程中,通常需要根据不同的运行环境初始化数据,基于@Profile注解,可以将这一过程包含在代码中兵做到自动化。@Profile(“dev”)@ConfigurationpublicclassDevDataInitConfig{@BeanpublicCommandLineRunnerdataInit(){returnnewCommandLineRunner(){@Overridepublicvoidrun(String…args)throwsException{//执行dev环境数据初始化}}}}29这里用到了SpringBoot提供的CommandLineRunner接口实现了该接口的代码会在SpringBoot应用程序启动时自动执行,可以在run()方法中提供数据初始化相关的代码30自定义配置信息创建和使用自定义配置信息举个例子:在配置文件中创建一个自定义的配置项,如下所示sprin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年初中三年级生物真题试卷
- 2025年人工智能辅助医疗设备研发可行性研究报告及总结分析
- 2025年智能制造行业技术革新项目可行性研究报告及总结分析
- 2025年精密机械加工产业链整合项目可行性研究报告及总结分析
- 2025年人工智能语音助手市场潜力分析可行性研究报告及总结分析
- 2025年智慧电网系统建设项目可行性研究报告及总结分析
- 2025年干旱地区水利工程改造可行性研究报告及总结分析
- 2025年绿色能源科技研发项目可行性研究报告及总结分析
- 2025年牡蛎苗种供应合同
- 2025年智能新能源解决方案项目可行性研究报告及总结分析
- 教师心理健康知识培训
- DB23∕T 2334-2019 装配式混凝土渠道应用技术规范
- 2025年春江苏开放大学机械创新设计060260过程性考核作业123答案
- T/CCS 029-2023综采工作面采煤机惯性导航系统技术规范
- 水利安全风险防控“六项机制”与安全生产培训
- 校园暴力预防培训课件(教师)
- 广东科学科粤版九年级上册化学(基础版)(全册知识点考点梳理、重点题型分类巩固练习)(家教、补习、复习用)
- 室内卧室门定制合同协议
- 妇科保健知识讲座课件
- YS/T 3045-2022埋管滴淋堆浸提金技术规范
- TCIATCM 096-2023 中医药科学数据汇交系统基本功能规范
评论
0/150
提交评论