资讯专栏INFORMATION COLUMN

Spring Boot [配置-上篇]

xuweijian / 569人阅读

摘要:在年首次发表了这种语言,另外与也是这语言的共同设计者。每种都可以通过配置使用控制台或者文件输出日志内容。可以通过是中的一个设置的日志级别。参考文档新年彩蛋自定义参考指南配置类配置详解

导读:

在上篇文章学习到了如何搭建一个简单的Spring Boot的项目,这篇文章我们主要围绕Spring Boot的外部化文件展开,

快速开始:外部化配置

首先是一个典型的Spring Boot的项目结构如下

com
 +- example
     +- myproject
         +- Application.java
         |
         +- domain
         |   +- Customer.java
         |   +- CustomerRepository.java
         |
         +- service
         |   +- CustomerService.java
         |
         +- web
             +- CustomerController.java                 

然后我们所有的资源文件都统一放在resources目录下,结构如下:

static
 +- css
 |   +- style.css
 |   +- common.css
 +- js
 |   +- index.js
 +- img
     +- img.png
     
templates
 +- index.html
 |   
 +- pages
 |   +- page.html

我们所有的配置文件都默认放在在resources目录下

1.自定义banner:

我们只需要在Spring Boot工程的/src/main/resources目录下创建一个banner.txt文件,然后将ASCII字符画复制进去,就能替换默认的banner了。这是一个自定义的banner.txt文件

${AnsiColor.BRIGHT_GREEN}
  ______                _                  ______
 / _____)              (_)                (____                    _
( (____   ____    ____  _  ____    ____    ____)  )  ___    ___   _| |_
 \____  |  _   / ___)| ||  _   / _  |  |  __  (  / _   / _  (_   _)
 _____) )| |_| || |    | || | | |( (_| |  | |__)  )| |_| || |_| |  | |_
(______/ |  __/ |_|    |_||_| |_| \___ |  |______/  \___/  \___/    \__)
         |_|                     (_____|

${AnsiColor.BRIGHT_RED}
Application Version: ${application.version}${application.formatted-version}
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}

在banner.txt中可以使用如下的变量:

${AnsiColor.BRIGHT_RED}:设置控制台中输出内容的颜色

${application.version}:用来获取MANIFEST.MF文件中的版本号

${application.formatted-version}:格式化后的${application.version}版本信息

${spring-boot.version}:Spring Boot的版本号

${spring-boot.formatted-version}:格式化后的${spring-boot.version}版本信息

打印效果图:

备注:
banner的字符画的生成工具:

http://patorjk.com/software/taag

http://www.network-science.de...

http://www.degraeve.com/img2t...

2.YAML文件

什么是YAML:
YAML是一个可读性高,用来表达数据序列的格式。YAML参考了其他多种语言,包括:C语言、Python、Perl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言[1],另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者[2]。目前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。引自维基百科
为什么使用YML:
在以往的项目中一写关于数据库之类的配置通常都会写在Properties中,YAML的作用与Properties类似都是用来配置一些属性值的,但是YAML相比于Properties要更加简洁,在项目中推荐使用YAML代替Properties,默认名称为application.yml
Spring Boot 中的yml:
Spring框架提供两个便利的类用于加载YAML文档,YamlPropertiesFactoryBean会将YAML作为Properties来加载,YamlMapFactoryBean会将YAML作为Map来加载。
示例:

environments:
    dev:
        url: http://dev.bar.com
        name: Developer Setup
    prod:
        url: http://foo.bar.com
        name: My Cool App

上面的YAML文档会被转化到下面的属性中:

environments.dev.url=http://dev.bar.com
environments.dev.name=Developer Setup
environments.prod.url=http://foo.bar.com
environments.prod.name=My Cool App

使用:
YAML列表被表示成使用[index]间接引用作为属性keys的形式,例如下面的YAML:

my:
   servers:
       - dev.bar.com
       - foo.bar.com

将会转化到下面的属性中:

my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com

使用Spring DataBinder工具绑定那样的属性(这是@ConfigurationProperties做的事),你需要确定目标bean中有个java.util.List或Set类型的属性,并且需要提供一个setter或使用可变的值初始化它,比如,下面的代码将绑定上面的属性:

@Component
@ConfigurationProperties(prefix="my")
public class Config {
    private List servers = new ArrayList();
    public List getServers() {
        return this.servers;
    }
}

一个配置数据库连接的示例:

spring:
  datasource:
    platform: mysql
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&useSSL=false
    username: root
    password: root

数据的松散绑定:

@Component
@ConfigurationProperties(prefix="person")
public class ConnectionSettings {
    private String firstName;
}

下面的属性名都能用于上面的@ConfigurationProperties类:

person.firstName 标准驼峰规则

person.first-name 虚线表示,推荐用于.properties和.yml文件中

PERSON_FIRST_NAME 大写形式,使用系统环境变量时推荐

了解更多的 常见应用属性
了解更多 Spring Boot 中的yml使用

3.日志格式化

Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。
Spring Boot默认的日志输出格式如下:

2014-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: "dispatcherServlet" to [/]
2014-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: "h

默认情况下,Spring Boot只会将日志记录到控制台而不会写进日志文件。可以通过"logging.level.*=LEVEL"("LEVEL"是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF中的一个)设置的日志级别。如果除了输出到控制台你还想写入到日志文件,那你需要设置logging.file或logging.path属性。

下面是一个使用YML配置打印路径及级别的例子:

logging:
  level:
    org.hibernate: ERROR
    org.springframework : DEBUG
      
  path: /logs
  file: myapp.log

日志管理
Spring Boot 日志记录 SLF4J
Spring Boot日志管理

结语:

在这篇文章中对Spring Boot 中常用的外置化配置做了一个简要的介绍,在下一篇文章将会介绍关于 使用配置类。

参考文档:

新年彩蛋:Spring Boot自定义Banner
《Spring Boot参考指南》-配置类
Spring boot(2)-配置详解

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66747.html

相关文章

  • 架构~微服务 - 收藏集 - 掘金

    摘要:它就是史上最简单的教程第三篇服务消费者后端掘金上一篇文章,讲述了通过去消费服务,这篇文章主要讲述通过去消费服务。概览和架构设计掘金技术征文后端掘金是基于的一整套实现微服务的框架。 Spring Boot 配置文件 – 在坑中实践 - 后端 - 掘金作者:泥瓦匠链接:Spring Boot 配置文件 – 在坑中实践版权归作者所有,转载请注明出处本文提纲一、自动配置二、自定义属性三、ran...

    church 评论0 收藏0
  • Spring Boot [Hello World]

    摘要:默认使用了内嵌容器支持开箱即用。备注关于第三步注解的一些描述该注解是引入的。查看源码可知其包含了和注解。我们可以将其看做对注解的增强与细分常用来返回格式的数据。 导读: 通过上篇文章, 我们已经了解到了 Spring Boot 作为一个Spring的脚手架, 其核心思想便是约定大于配置,通过一层层的封装让我们可以在最短的时间内搭建一个web项目,从繁琐的配置中走出来更加关注业务代码。...

    OnlyMyRailgun 评论0 收藏0
  • 5、springcloud整合mybatis注解方式

    摘要:上一篇学习了服务提供者,但是并不是单单就学习了服务提供者。中间还穿插使用了数据源和整合。但是上篇使用时还是沿用了老的方式,需要配置对应的文件。 1、上一篇学习了服务提供者provider,但是并不是单单就学习了服务提供者。中间还穿插使用了Hikari数据源和spring cloud整合mybatis。但是上篇使用mybatis时还是沿用了老的方式,需要配置mapper对应的xml文件。...

    ingood 评论0 收藏0
  • 架构~微服务

    摘要:接下来继续介绍三种架构模式,分别是查询分离模式微服务模式多级缓存模式。分布式应用程序可以基于实现诸如数据发布订阅负载均衡命名服务分布式协调通知集群管理选举分布式锁和分布式队列等功能。 SpringCloud 分布式配置 SpringCloud 分布式配置 史上最简单的 SpringCloud 教程 | 第九篇: 服务链路追踪 (Spring Cloud Sleuth) 史上最简单的 S...

    xinhaip 评论0 收藏0
  • Spring Boot [配置-下篇]

    摘要:进行异常的捕捉与错误信息页面的定制。告诉,这是一个对象,该对象应该被注册为在应用程序上下文中的。不同框架的不同配置这里以作为演示默认情况下,保护已启用。你必须配置包含令牌的所有的网页来工作。该命名结构旨在帮你找到需要的。 导读: 在上篇文章中我们了解到Spring Boot 的一些常用的外部化配置,在本篇中我们将会继续对类的配置进行了解 一个简单的例子[错误页面定制]: 在 Spr...

    StonePanda 评论0 收藏0

发表评论

0条评论

xuweijian

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<