前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot 快速入门

SpringBoot 快速入门

作者头像
收心
发布2022-01-17 14:50:01
4730
发布2022-01-17 14:50:01
举报
文章被收录于专栏:Java实战博客

配置

  • 配置文件分类
  • yaml
  • 读取配置文件内容
  • profile (环境切换 dev、test、pro)
  • 内置配置加载顺序
  • 外部配置加载顺序

配置文件分类

由于 SpringBoot 贯彻 约定大于配置的思想 ,所以很多的配置 都有默认值,如果我们想自定义去指定我们想要的配置,我们就可以创建自己的配置文件 后缀格式有2种 但是文件名 只有一个 application

application.properties (键值对形式)

application.yml 或者 application.yaml(yml格式)

两者简单对比

代码语言:javascript
复制
properties 内容
spring.port=8080

yml 格式
spring:
  port: 8080

命名不同会导致加载顺序不同

Spring Cloud 中bootstartp 加载顺序优先于application 但是SpringBoot不识别这个规则

示例: bootstartp.properties > application.properties

三种applicaiton.后缀 加载顺序

properties > yaml > yml

即:如果 properties 中存在的配置 在 yaml 或者 yml 配置文件也有 那么就会优先使用 properties中的配置;如果 properties中没有的配置,那么就会在yaml、yml中进行读取。

详解 YAML

yaml 是一个配置文件格式 是以数据为核心,比xml更加简洁

YAML、XML、 Proprerties 对比

Properties 不容易看出 层级关系

XML 写起来要写标签 麻烦

YAML 优点多多

YAML语法

  • 区分大小写
  • 数据值前必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进不认Tab 只认空格 切记( IDEA 可以按Tab)
  • # 表示注释
  • 缩进空格数不重要,只要同层级别元素左侧对齐即可

YAML的数据格式

  • 对象 map:键值对集合
代码语言:javascript
复制
person:
 name: zhangsan
 age: 20

#行内写法
persion: {name: zhangsan,age: 20}
  • 数组
代码语言:javascript
复制
address:
 - beijing
 - shanghai

#行内写法
address: [beijing,shanghai]
  • 纯量
代码语言:javascript
复制
msg: 'hello \n world'  # 单引号 \n 不会被识别为换行
msg: "hello \n world"  # 双引号 \n 会被识别为换行

Yaml 参数引用

代码语言:javascript
复制
name: "zhangsan"

persion:
 name: ${name}  # 引用了 name 的值 zhangsan 了

读取配置文件的内容

配置文件的内容:一部分 会被Spring 自动识别,另一部分 不能自动获取,就需要我们自己手动获取了

我们获取文件值有3种方式

  • @value
  • Environment
  • @ConfigurationProperties

案例1 @value

例如 当前Yml 中有

代码语言:javascript
复制
name: "zhangsan"

我们获取 就需要获取

代码语言:javascript
复制
@value("${name}")
private String name;

这里说一个事情 打死你都获取不了,static是干嘛的?优先加载,final是干嘛的,都会导致你无法获取值,切记,切记 不能加static 也不能加final 也不能同时加
@value("${name}")
private static final String name1;

关于数组处理:yml

代码语言:javascript
复制
persion:
 address: [beijing,shanghai]
代码语言:javascript
复制
@value("${persion.address[0]}")
private static final String name1;  //beijing

常量跟对象是一样的,只是区分了’A \n B’ ,”A \n B” 的单双引号区别

案例2 Environment

yml中有:

代码语言:javascript
复制
name: "zhangsan"
代码语言:javascript
复制
@Autowired
private Environment env;


使用就是
String name = env.getProperties("name");

案例3 @ConfigurationProperties

yml 中有

代码语言:javascript
复制
name: "libai"

persion:
 name: "zhangsan"
 age: 18

创建一个Persion 类 加入 下面的红色 内容即可 下面没写 构造方法 ,使用前,请自行添加。

代码语言:javascript
复制
@Component // 声明这是个Bean
@ConfigurationProperties
@Data
public class Persion{
  private String name;
 // libai
  private int age;
  // 0
}
代码语言:javascript
复制
@Component // 声明这是个Bean
@ConfigurationProperties(prefix = "persion") // 可以选择括号内容 是否填写
@Data
public class Persion{
  private String name; // zhangsan
  private int age; // 18
}

讲解一下 prefix 即 前缀,将来赋值属性的时候 就会拼接上去 即找XXX的时候就会去找persion.XXX

终了

然后说明一个依赖 可以增加 yml 的提示功能

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

Profile 环境选择

profile 配置方式

  • 多profile文件
  • yml多文档方式

profile 激活使用 不激活 不会去使用

  • 配置文件
  • 虚拟机参数
  • 命令行参数

如果配置文件 没有被启用激活 在SpringBoot项目启动的时候,一般来说第二行就会出现

代码语言:javascript
复制
2021-02-06 09:45:55.709  INFO 22520 --- [           main] com.giant.shop1688application            : No active profile set, falling back to default profiles: default

简单的看信息 也能看出来,没有设置profile,回去使用默认的 profile

实验1

在resources中配置 4个文件

文件1:application.properties

文件2:application-dev.properties 指定端口 8081

文件3:application-test.properties 指定端口 8082

文件4:application-pro.properties 指定端口 8083

在applicaiton.properties中使用

代码语言:javascript
复制
spring.profiles.actice=pro

那么就会指定启动配置文件 application-pro.properties 所以启动端口是8083

Banner设置

自己生成一个Banner还是比较炫酷的:http://patorjk.com/software/taag/

点击上图的Test All 就可以生成非常多的样式,有的格式不支持Test All。 找到自己喜欢的 复制到一个名为banner.txt 文件里

将banner.txt 拖至项目的 resources中 重启项目 spring默认即使用我们能banner!

如果想更变banner名称,需要在配置文件中加入,

代码语言:javascript
复制
#指定banner
spring.banner.charset=UTF-8
spring.banner.location=你指定的名称.txt

#如果放到其他位置,建议使用classpath 进而去找到你指定的文件位置即可!
spring.banner.location=classpath:banner.txt

Banner可以写的花里胡哨,比如:

代码语言:javascript
复制
${AnsiStyle.BOLD} 字体样式 BOLD
${AnsiStyle.FAINT} 字体样式 FAINT 翻译是弱小,但跟默认的差不多
${AnsiStyle.ITALIC} 字体样式 ITALIC 斜体
${AnsiStyle.NORMAL} 字体样式 NORMAL 标准
${AnsiStyle.UNDERLINE} 字体样式 UNDERLINE 强调(带有下划线)

${AnsiColor.BRIGHT_CYAN} 字体颜色:亮青色
${AnsiColor.BLACK} 字体颜色:黑色

${AnsiBackground.BRIGHT_GREEN} 背景颜色:鲜绿色
${AnsiBackground.BLUE} 背景颜色:蓝色
${AnsiBackground.BRIGHT_WHITE} 背景颜色:亮白


${AnsiBackground.BRIGHT_GREEN}      ________   __                           _____       _                     ____      ____  ____    ____    ______
${AnsiBackground.BRIGHT_GREEN}      |  __   _| [  |                         |_   _|     (_)                   |_  _|    |_  _||_   \  /   _| .' ____ \
${AnsiBackground.BRIGHT_GREEN}      |_/  / /    | |--.    .---.   _ .--.      | |       __    ,--.     .--.     \ \  /\  / /    |   \/   |   | (___ \_|
${AnsiBackground.BRIGHT_GREEN}         .'.' _   | .-. |  / /__\\ [ `.-. |     | |   _  [  |  `'_\ :  / .'`\ \    \ \/  \/ /     | |\  /| |    _.____`.
${AnsiBackground.BRIGHT_GREEN}       _/ /__/ |  | | | |  | \__.,  | | | |    _| |__/ |  | |  // | |, | \__. |     \  /\  /     _| |_\/_| |_  | \____) |
${AnsiBackground.BRIGHT_GREEN}      |________| [___]|__]  '.__.' [___||__]  |________| [___] \'-;__/  '.__.'       \/  \/     |_____||_____|  \______.'

${AnsiStyle.NORMAL} 这个非常重要,不恢复(使用Normal)的话,之前加入的AnsiBackground的位置会变形

枕聊WMS(Web Menagerment Server) 后台启动中...
This Project create in 2021-09-25..
SpringBoot Version is ${spring-boot.version}
Project port is ${server.port}

特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置
    • 配置文件分类
    • 命名不同会导致加载顺序不同
    • 三种applicaiton.后缀 加载顺序
    • 详解 YAML
    • YAML语法
    • YAML的数据格式
    • 读取配置文件的内容
    • 案例1 @value
    • 案例2 Environment
    • 案例3 @ConfigurationProperties
    • Profile 环境选择
    • 实验1
    • Banner设置
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档