SpringBoot官方文档学习(三)配置文件、日志、国际化和JSON
一、Profiles
Spring配置文件提供了一种方法来隔离应用程序配置的各个部分,并使其仅在某些环境中可用。任何@Component、@Configuration或@ConfigurationProperties都可以标记为@Profile来限制加载时间,如下面的示例所示:
@Configuration(proxyBeanMethods = false)
@Profile("production")
public class ProductionConfiguration { // ... }
注:如果@ConfigurationProperties bean是通过@EnableConfigurationProperties而不是通过自动扫描注册的,则需要在具有@EnableConfigurationProperties注释的@Configuration类上指定@Profile注释。在扫描@ConfigurationProperties的情况下,可以在@ConfigurationProperties类本身上指定@Profile。
你可以使用spring.profiles.active环境属性,以指定哪些配置文件是活动的。您可以使用本章前面描述的任何方式指定属性。例如,您可以在应用程序中包含它。属性如下例所示:
spring.profiles.active=dev,hsqldb
我们也可以使用命令行指定:
--spring.profiles.active=dev,hsqldb
1.添加活跃的配置文件
spring.profiles.active属性遵循其它属性的一样顺序规则:最高的属性来源获胜。 简言之,依据学习(二)中提到的,不同的外面文件加载顺序是不一样的,相同的配置属性时,优先级高的值替换优先级低的。换句话说,我们可以通过命令行的配置来替换项目中加载的application.properties配置。
有时,将profil-specific文件的属性添加到活动profiles文件而不是替换它们是很有用的。spring.profiles.include属性可用于无条件地添加活动配置文件。SpringApplication入口点还有一个用于设置额外概要文件的Java API(也就是说,优先于spring.profiles.active属性))。参见SpringApplication中的setAdditionalProfiles()方法。
例如,当应用以--spring.profiles.active=prod命令行启动时,proddb和prodmq文件都是被激活的。
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
- proddb
- prodmq
2.以编程方式设置配置文件
两种:
第一种:在应用启动前,调用SpringApplication.setAdditionalProfiles(…)。
例(指定活跃文件):
a.在代码中显示增加SpringApplication .setAdditionalProfiles("dev");
b.运行Application.java文件启动,则增加参数System.setProperty("spring.profiles.active", "dev");、
c.命令行直接运行jar文件,则使用java -jar -Dspring.profiles.active=dev demo-0.0.1-SNAPSHOT.jar
第二种:使用spring的ConfigurableEnvironment接口。

详细可参考文档:https://blog.csdn.net/mayongzhan_csdn/article/details/86647983
3.Profile配置文件
在application.properties(application.yml)和引用的文件中的profile都是通过@ConfigurationProperties来找到文件并加载的。
二、日志
Springboot提供了Java Util Logging 、Log4j2和Logback。
如果使用“Starters”,默认使用Logback。
注:
1.Java有许多可用的日志记录框架。如果上面的列表看起来令人困惑,请不要担心。通常,您不需要更改日志记录依赖项,并且Spring Boot默认值可以正常工作。
2.将应用程序部署到servlet容器或应用程序服务器时,通过Java Util Logging API执行的日志记录不会路由到应用程序的日志中。这样可以防止由容器或已部署到容器中的其他应用程序执行的日志记录出现在应用程序的日志中。
1.日志格式
2019-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2019-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
Log Level: ERROR, WARN, INFO, DEBUG, or TRACE.
注:Logback does not have a FATAL level. It is mapped to ERROR
2.控制台输出
默认输出到控制台的级别:ERROR,WARN,INFO.
如果要打印debug级别,java -jar myapp.jar --debug
注:我们也可以在application.properties中指定debug=true。
2.1有色条标志输出
如果终端支持ANSI,则可以使用彩色输出来提高可读性。可以设置spring.output.ansi.enabled为支持的值来覆盖自动检测。AnsiOutput.Enabled的值可为:ALWAYS DETECT NEVER
通过使用%clr转换字来配置颜色编码。根据对级别输出着色:%clr(%5p)
日志级别到颜色的映射:FATAL ERROR 红色 WARN 黄色 INFO DEBUG TRACE 绿色
也可以通过将需要转换的选项指定使用颜色和样式。例如文本变黄,使用以下:
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}
支持以下颜色和样式:blue、cyan、faint、green、magenta、red、yellow。
3.文件输出
默认情况下,Spring Boot仅记录到控制台,不写日志文件。如果除了控制台输出外还想写日志文件,则需要设置一个logging.file.name或logging.file.path属性(例如,在application.properties)。
logging.file.name |
logging.file.path |
Example | Description |
|---|---|---|---|
|
(none) |
(none) |
Console only logging. |
|
|
Specific file |
(none) |
|
Writes to the specified log file. Names can be an exact location or relative to the current directory. |
|
(none) |
Specific directory |
|
Writes |
当文件达到10MB时,日志将从头开始重新写入。
可以使用该logging.file.max-size属性更改文件大小限制
日志档案的总大小可以使用设置上限logging.file.total-size-cap。当日志归档的总大小超过该阈值时,将删除备份。要在应用程序启动时强制清除日志存档,请使用logging.file.clean-history-on-start属性。
4.日志级别
可以在Environment(例如:application.properties)设置logging.level.<logger-name>=<level>,其中level可以为:TRACE,DEBUG,INFO,WARN,ERROR,FATAL或OFF之一。
例如:
logging.level.root=warn
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
5.日志组
Spring Boot允许您在Spring中定义日志记录组Environment。例如,这是通过将“ tomcat”组添加到您的方式来定义它的方法application.properties:
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
定义后,您可以使用一行更改该组中所有记录器的级别:
logging.level.tomcat=TRACE
Spring Boot包含以下预定义的日志记录组,它们可以直接使用:
| Name | Loggers |
|---|---|
|
web |
|
|
sql |
|
6.自定义日志配置
可以将自定的日志文件放在类路径的根目录或者在配置文件中通过logging.config进行制定位置。
可以通过使用org.springframework.boot.logging.LoggingSystemsystem属性来强制Spring Boot使用特定的日志系统。该值应该是实现的完全限定的类名LoggingSystem。您还可以通过使用值完全禁用Spring Boot的日志记录配置none。
注:由于日志记录是在ApplicationContext创建之前初始化的,因此无法从@PropertySourcesSpring @Configuration文件中控制日志记录。更改日志记录系统或完全禁用它的唯一方法是通过系统属性。
依据日志系统,下面的日志配置文件将会被加载:
| Logging System | Customization |
|---|---|
|
Logback |
|
|
Log4j2 |
|
|
JDK (Java Util Logging) |
|
注:如果可能,我们建议您在日志配置中使用-spring变体(例如,使用logback-spring.xml而不是logback.xml)。如果使用标准配置位置,Spring无法完全控制日志初始化。
为了帮助进行定制,一些其他属性从Spring环境转移到系统属性,如下表所示:
| Spring Environment | System Property | Comments |
|---|---|---|
|
|
|
The conversion word used when logging exceptions. |
|
|
|
Whether to clean the archive log files on startup (if LOG_FILE enabled). (Only supported with the default Logback setup.) |
|
|
|
If defined, it is used in the default log configuration. |
|
|
|
Maximum log file size (if LOG_FILE enabled). (Only supported with the default Logback setup.) |
|
|
|
Maximum number of archive log files to keep (if LOG_FILE enabled). (Only supported with the default Logback setup.) |
|
|
|
If defined, it is used in the default log configuration. |
|
|
|
Total size of log backups to be kept (if LOG_FILE enabled). (Only supported with the default Logback setup.) |
|
|
|
The log pattern to use on the console (stdout). (Only supported with the default Logback setup.) |
|
|
|
Appender pattern for log date format. (Only supported with the default Logback setup.) |
|
|
|
The log pattern to use in a file (if |
|
|
|
The format to use when rendering the log level (default |
|
|
|
Pattern for rolled-over log file names (default |
|
|
|
The current process ID (discovered if possible and when not already defined as an OS environment variable). |
三、国际化
Spring Boot支持本地化消息,因此您的应用程序可以满足不同语言首选项的用户。默认情况下,Spring Boot会在类路径的根目录下查找消息资源包的存在。
可以使用spring.message 命名空间来配置资源包的basename和其他几个属性,如下例所示:
spring.messages.basename=messages,config.i18n.messages
spring.messages.fallback-to-system-locale=false
spring.messages.basename支持以逗号分隔的位置列表,包括包限定符或从类路径根解析的资源。
四、JSON
Spring Boot提供了与三个JSON映射库的集成:Gson、Jackson和JSON-B。
Jackson是首选和默认的库。
1.Jackson
提供了Jackson的自动配置,Jackson是spring-boot-starter-json的一部分。当Jackson位于类路径上时,将自动配置ObjectMapper bean。为自定义ObjectMapper的配置提供了几个配置属性。
2.Gson
提供了Gson的自动配置。当Gson位于类路径上时,将自动配置Gson bean。几个spring.gson.*配置属性用于自定义配置。为了获得更多的控制,可以使用一个或多个GsonBuilderCustomizer bean。
3.JSON-B
提供了JSON-B的自动配置。当JSON-B API和实现位于类路径上时,将自动配置Jsonb bean。首选的JSON-B实现是Apache Johnzon,为其提供了依赖项管理。
以使用Gson为例:https://www.jianshu.com/p/0b1f376bce5b
SpringBoot官方文档学习(三)配置文件、日志、国际化和JSON的更多相关文章
- SpringBoot官方文档学习(一)SpringApplication
Springboot通过main方法启动,在许多情况下,委派给静态SpringApplication.run方法: public static void main(String[] args) { S ...
- SpringBoot官方文档学习(二)Externalized Configuration(外部化配置)
Spring Boot允许您将配置外部化,以便可以在不同的环境中使用相同的应用程序代码.您可以使用属性文件.YAML文件.环境变量和命令行参数来具体化配置.属性值可以通过使用@Value注释直接注入b ...
- SpringBoot官方文档学习(一)开发你的第一个Spring Boot应用
一些准备工作: 本节介绍如何开发一个简单的“ Hello World!” Web应用程序,该应用程序重点介绍Spring Boot的一些关键功能.我们使用Maven来构建该项目,因为大多数IDE都支持 ...
- SpringBoot官方文档学习(二)使用Spring Boot构建系统
强烈建议您选择一个支持依赖关系管理并且可以使用发布到“ Maven Central”仓库的构建系统.我们建议您选择Maven或Gradle.其他构建系统(例如,Ant)也可以和Spring Boot一 ...
- Spring Boot 官方文档学习(一)入门及使用
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring boot官方文档学习(一)
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
- Spring Data Commons 官方文档学习
Spring Data Commons 官方文档学习 -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...
随机推荐
- 【转帖】MySQL用得好好的,为什么要转ES?
MySQL用得好好的,为什么要转ES? http://developer.51cto.com/art/201911/605288.htm Elasticsearch作为一款功能强大的分布式搜索引擎,支 ...
- 深度学习--pytorch安装
一.查看cuda及cudnn版本 先确保安装了显卡:nvidia-smi 查看 cat /usr/local/cuda/version.txt cat /usr/local/cuda/include/ ...
- 单实例dg软件从10.2.0.4版本安装至10.2.0.5.12
DG环境搭建需求,因此安装与主库相同的软件版本 1.主库软件版本10.2.0.5.12 2dg环境提供的是全新的10.2.0.4.0 3.安装步骤,安装10.2.0.5 静默安装 psu安装10.2. ...
- 【转】Redis 基础操作和命令
笔记 Redis提供了六种基本的数据结构:String,Hash,List,Set,Sorted Set,HyperLogLog. Redis的特点:纯内存操作,单线程工作模型,非阻塞I/O多路复用. ...
- .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
原文:.NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态 在 Windows 系统中,一段时间不操作键盘和鼠标,屏幕便会关闭,系统会进入睡眠状态.但有些程序(比如游戏.视频和演示文稿)在运行过程中应该 ...
- java之hibernate之配置讲解
1.映射文件:User.hbm.xml <!-- package 指向class中所有类的包名,可以直接在指定类名时同时指定包名 --> <hibernate-mapping pac ...
- 3)创建,测试,发布 第一个NET CORE程序
工具:Visual Studio Code 或者 Visual Studio 环境:.NET CORE 2.0 VS Code很强大 当然支持netcore的开发,但是我还是选择更熟悉更强大的VS. ...
- Mybatis中三种关联关系的实现
目录 一对一查询 一对多查询 自关联查询: 多对多查询 总结: 三种关联关系:一对多,一对一,多对多 两种查询方式:嵌套查询,连接查询(也可称作:多表单独查询,多表连接查询) 每一种关联关系都可以通过 ...
- mysql 设置局域网内可访问
今天同事要连我电脑的数据库 我以为只要127.0.0.1 可以访问就是 运行通过ip访问的... 然而并不是..这里记录下方法 1.打开命令行 进入你电脑的 mysql的bin 目录下 mys ...
- dpkg文件缺失问题
sudo apt-get update 命中:1 http://security.ubuntu.com/ubuntu bionic-security InRelease 命中:2 ht ...