第二章 SpringBoot基础配置
2.3 定制banner
SpringBoot启动时会打印一个banner,可以修改
设置成艺术字体,有在线网站可参考:http://network-science.de/ascii/
http://kammerl.de/ascii/AsciiSignature.php
http://patorjk.com/software/taag
在resources目录下创建一个banner.txt 将文本复制到其中
关闭你的banner
在你的启动类main方法中
public static void main(String[] args) { SpringApplicationBuilder builder = new SpringApplicationBuilder(LessonbookApplication.class); builder.bannerMode(Banner.Mode.OFF).run(args); }
2.4 Web容器配置
SpringBoot项目中,可以内置Tomcat,Jetty等容器,但是添加了spring-boot-starter-web依赖之后,默认会选择使用Tomcat作为Web容器
2.4.1 Tomcat配置
###配置端口号 server.port=8088 ###配置勒当项目出错时跳转去的页面 server.error.path=/error ###配置了session失效时间,30m表示30分钟,不加单位,默认单位是秒.但由于Tomcat中配置session过期时间以分钟为单位, ###因此单位是秒,会转换为一个不超过所配置秒数的最大分钟,例如119,为一分钟 server.servlet.session.timeout=30m ###表示项目名称,不配置时默认为/.如果配置了,就要在访问路径中加上配置的路径 server.servlet.context-path=/Lessonbook ###配置Tomcat请求编码 server.tomcat.uri-encoding=utf-8 ###Tomcat最大线程数 server.tomcat.max-threads=500 ###存放Tomcat运行日志和临时文件的目录,若不配置,则默认使用系统的临时目录 server.tomcat.basedir=/home/sang/tmp
这些是一些常用配置,具体的可以去参考官方文档https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
HTTPS配置
生成密匙,在jdk/bin的目录下,cmd输入
keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore sang.p12 -validity 365
会生成一个sang.p12的文件,放入项目的根路径下,并且在application.properties中配置
###表示密匙文件名 server.ssl.key-store=sang.p12 ###密匙别名 server.ssl.key-alias=tomcathttps ###就是在cml命令命令执行过程中输入的密码 server.ssl.key-store-password=857448959
2.5 Properties配置
SpringBoot 采用了大量的自动化配置,但有的项目中不可避免的需要手动去配置
SpringBoot项目中的application.properties配置文件一共可以出现在四个位置:
-
项目根目录下的config文件夹中
-
项目根目录下
-
classpath下的config文件夹中
-
classpath下
若是文件相同,优先加载从上到下, application.yml作为配置文件优先级也是一样的
也可以自己定义名字,例如在resources目录下创建一个配置文件app.properties,将项目打成jar包,打包成功后,使用以下命令运行:
java -jar Lessonbook-2-0.0.1-SNAPSHOT.jar --spring.config.name=app
在运行是指定配置文件的名字,使用spring.config.name指定
java -jar Lessonbook-2-0.0.1-SNAPSHOT.jar --spring.config.name=app --spring.config.location=classpath:/
2.6 类型安全配置属性
无论是Properties还是YAML/YML配置,最终都会被加载到SpringEnvironment中.
Spring提供了@Value注解以及EnvironmentAware接口来将SpringEnvironment中得数据注入到属性上,使用得是一种安全配置属性并且方便.
在application.properties中添加一段配置
book.name=三国演义 book.author=罗贯中 book.price=30
但是有可能会乱码,需要在setting中改变编码格式,并且导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
这个依赖是用来读取properties用来生成元数据的,若是没有导入,也会有乱码现象
2.7 YAML配置
YAML是JSON的超集,是一种专门用来书写配置文件的语言,可以代替application.properties.,创建一个SpringBoot项目时,spring-boot-starter-web会引入snakeyaml依赖,实现对YAML配置的解析
我们先将resource下的application.properties文件删除,然后创建一个application.yml,添加如下配置
server: port: 8088 servlet: context-path: /Lessonbook tomcat: uri-encoding: utf-8
注意冒号后面有一个空格,使用IDEA创建YML文件,需要特殊注意,具体网址参考https://blog.csdn.net/zjx15202950573/article/details/88368091
YAML的复杂配置
```
@Component @ConfigurationProperties( prefix = "my") public class User { private String name; private String address; private List<String> favorites; ... }
###YAML配置 server: port: 8088 servlet: context-path: /Lessonbook tomcat: uri-encoding: utf-8 my: name: 江南一点雨 address: China favorites: - 足球 - 徒步 - Coding
当然 List集合也可以装对象,实现跟上述区别不大
注意不能使用@PropertySource注解加载YAML文件
2.8 Profile
在Spring中有注解@Profile配置,SpringBoot更加简洁,SpringBoot中约定不同的环境配置文件名称规则
:application-{profile}.properties, profile占位符表示当前环境的名称,具体配置如下
1.创建配置文件
在resource目录下创建两个配置文件: application-dev.properties和application-prod.properties
在application.properties中进行配置:
spring.profiles.active=dev ###dev可改为prod 即对应的生产环境
在代码中配置
在启动类的main中
public static void main(String[] args) { SpringApplicationBuilder builder = new SpringApplicationBuilder(LessonbookApplication.class); builder.application().setAdditionalProfiles("prod");//此句即设置环境 builder.run(args); }
项目启动时配置
在项目打成jar包后启动
java -jar Lessonbook-2-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod