一、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: ERRORWARNINFODEBUG, 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.namelogging.file.path属性(例如,在application.properties)。

logging.file.name logging.file.path Example Description

(none)

(none)

 

Console only logging.

Specific file

(none)

my.log

Writes to the specified log file. Names can be an exact location or relative to the current directory.

(none)

Specific directory

/var/log

Writes spring.log to the specified directory. Names can be an exact location or relative to the current directory.

当文件达到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

org.springframework.core.codecorg.springframework.httporg.springframework.weborg.springframework.boot.actuate.endpoint.weborg.springframework.boot.web.servlet.ServletContextInitializerBeans

sql

org.springframework.jdbc.coreorg.hibernate.SQLorg.jooq.tools.LoggerListener

6.自定义日志配置

可以将自定的日志文件放在类路径的根目录或者在配置文件中通过logging.config进行制定位置。

可以通过使用org.springframework.boot.logging.LoggingSystemsystem属性来强制Spring Boot使用特定的日志系统。该值应该是实现的完全限定的类名LoggingSystem。您还可以通过使用值完全禁用Spring Boot的日志记录配置none

注:由于日志记录是在ApplicationContext创建之前初始化的,因此无法从@PropertySourcesSpring @Configuration文件中控制日志记录。更改日志记录系统或完全禁用它的唯一方法是通过系统属性。

依据日志系统,下面的日志配置文件将会被加载:

Logging System Customization

Logback

logback-spring.xmllogback-spring.groovylogback.xml, or logback.groovy

Log4j2

log4j2-spring.xml or log4j2.xml

JDK (Java Util Logging)

logging.properties

注:如果可能,我们建议您在日志配置中使用-spring变体(例如,使用logback-spring.xml而不是logback.xml)。如果使用标准配置位置,Spring无法完全控制日志初始化。

为了帮助进行定制,一些其他属性从Spring环境转移到系统属性,如下表所示:

Spring Environment System Property Comments

logging.exception-conversion-word

LOG_EXCEPTION_CONVERSION_WORD

The conversion word used when logging exceptions.

logging.file.clean-history-on-start

LOG_FILE_CLEAN_HISTORY_ON_START

Whether to clean the archive log files on startup (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.file.name

LOG_FILE

If defined, it is used in the default log configuration.

logging.file.max-size

LOG_FILE_MAX_SIZE

Maximum log file size (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.file.max-history

LOG_FILE_MAX_HISTORY

Maximum number of archive log files to keep (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.file.path

LOG_PATH

If defined, it is used in the default log configuration.

logging.file.total-size-cap

LOG_FILE_TOTAL_SIZE_CAP

Total size of log backups to be kept (if LOG_FILE enabled). (Only supported with the default Logback setup.)

logging.pattern.console

CONSOLE_LOG_PATTERN

The log pattern to use on the console (stdout). (Only supported with the default Logback setup.)

logging.pattern.dateformat

LOG_DATEFORMAT_PATTERN

Appender pattern for log date format. (Only supported with the default Logback setup.)

logging.pattern.file

FILE_LOG_PATTERN

The log pattern to use in a file (if LOG_FILE is enabled). (Only supported with the default Logback setup.)

logging.pattern.level

LOG_LEVEL_PATTERN

The format to use when rendering the log level (default %5p). (Only supported with the default Logback setup.)

logging.pattern.rolling-file-name

ROLLING_FILE_NAME_PATTERN

Pattern for rolled-over log file names (default ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz). (Only supported with the default Logback setup.)

PID

PID

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的更多相关文章

  1. SpringBoot官方文档学习(一)SpringApplication

    Springboot通过main方法启动,在许多情况下,委派给静态SpringApplication.run方法: public static void main(String[] args) { S ...

  2. SpringBoot官方文档学习(二)Externalized Configuration(外部化配置)

    Spring Boot允许您将配置外部化,以便可以在不同的环境中使用相同的应用程序代码.您可以使用属性文件.YAML文件.环境变量和命令行参数来具体化配置.属性值可以通过使用@Value注释直接注入b ...

  3. SpringBoot官方文档学习(一)开发你的第一个Spring Boot应用

    一些准备工作: 本节介绍如何开发一个简单的“ Hello World!” Web应用程序,该应用程序重点介绍Spring Boot的一些关键功能.我们使用Maven来构建该项目,因为大多数IDE都支持 ...

  4. SpringBoot官方文档学习(二)使用Spring Boot构建系统

    强烈建议您选择一个支持依赖关系管理并且可以使用发布到“ Maven Central”仓库的构建系统.我们建议您选择Maven或Gradle.其他构建系统(例如,Ant)也可以和Spring Boot一 ...

  5. Spring Boot 官方文档学习(一)入门及使用

    个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...

  6. Spring boot官方文档学习(一)

    个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...

  7. Spring 4 官方文档学习(十二)View技术

    关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...

  8. Spring Data Commons 官方文档学习

    Spring Data Commons 官方文档学习   -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...

  9. Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图

    接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...

随机推荐

  1. [转帖]Windows 7寿终正寝 为何Windows 10屡被吐槽它却无比经典?

    Windows 7寿终正寝 为何Windows 10屡被吐槽它却无比经典? https://www.cnbeta.com/articles/tech/908897.htm 是的,一代经典操作系统Win ...

  2. Fiddler抓包工具如何可以抓取HTTPS

  3. [十一集训] Day1 (2018-2019 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2018))

    A Altruistic Amphibians 原题 题目大意: n只青蛙在高度为d的井中,每只有跳跃距离.重量和高度,每只青蛙可以借助跳到别的青蛙的背上而跳出井,每只青蛙能承受的最大重量是自身重量, ...

  4. JVM之java并发 ——线程安全与锁优化

    概述 人们很难想象现实中的对象在一项工作进行期间,会被不停地中断和切换,对象的属性(数据)可能会在中断期间被修改和变“脏”,而这些事情在计算机世界中则是很正常的事情.有时候,良好的设计原则不得不向现实 ...

  5. 深度探索MySQL主从复制原理

    深度探索MySQL主从复制原理 一 .概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什么? 1.1 MySQL 主从复制概念 MySQ ...

  6. L2R 二:常用评价指标之AUC

    零零散散写了一些,主要是占个坑: AUC作为一个常用的评价指标,无论是作为最后模型效果评价还是前期的特征选择,都发挥着不可替代的作用,下面我们详细介绍下这个指标. 1.定义 2.实现 # coding ...

  7. Redis之RDB和AOF持久化介绍

    什么是数据库状态 redis是一个键值对的数据库服务器,服务器中通常包含中任意个非空的数据库,而每个数据库又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及他们的键值对统称为数据库状 ...

  8. C# CheckBoxList绑定值,设置及获取

    前端页面:.aspx <asp:CheckBoxList ID="ckbdot" runat="server" RepeatDirection=" ...

  9. Golang-使用md5对字符串进行加密

    方式一: func md5Test1(str string) string { m5 := md5.New() _,err := m5.Write([]byte(str)) if err != nil ...

  10. 4_PHP流程控制语句_3_程序跳转和终止语句

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. PHP流程控制共有3种类型:条件控制结构.循环结构以及程序跳转和终止语句. 4.3 程序跳转和终止语句 4.3.1 ...