SpringBoot配置文件

1. 配置文件引入

配置文件最重要的作用: 解决硬编码的问题 

下面修改端口看一下: 

 

 

2. 配置文件格式

Spring Boot 配置⽂件有以下三种: 

  • application.properties
  • application.yml
  • application.yaml(yml的简写)

 

说明: 

 

  • 当两个文件并存时,两个配置都会加载.
  • 如果配置⽂件内容有冲突,则以 properties 优先级更⾼.
  • 虽然理论上来讲 .properties 可以和 yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配置⽂件格式,这样可以更好的维护(降低故障率).

 

3. properties 配置⽂件说明

3.1 基本语法

 ​​​​​​

key value的形式,以"="分割

key的格式建议小写,单词之间使用.分割

3.2 读取配置⽂件@Value

@Value 注解使⽤" ${} "的格式读取 

 

 

如果去掉#呢?

3.3 properties 缺点 

 

从上述配置key看出,properties配置⽂件中会有很多的冗余的信息

 

4. yml配置⽂件说明

4.1 基本语法

 

yml是树形结构的配置⽂件,它的基础语法是"key:value".

key和value之间使⽤英⽂冒号加空格的⽅式组成,空格不可省略.


那假如把空格省略呢?

 


 

4.2 yml使⽤进阶

4.2.1 配置读取

读取方法与properties方式一样 

 

4.2.2 yml配置不同数据类型及null

4.2.2.1 null

使用~

 

4.2.2.2 空字符串 

 

key后面直接空着就可以,或者获取单双引号括起来(更推荐)

4.2.2.3 单双引号转义区别

 

 

  •  \n本身表示的是换行
  • 使用单引号时,内容表示成了\你,而不是换行,所以认为是转义
  • 使用双引号时,\n表示了换行,也就是\n的本来含义

4.2.3 配置对象 

配置文件:

 

配置内容读取:

 

注入:

 

此时就可以读取了:

 

4.2.4 配置集合/数组

 配置文件:

(-空格)

配置内容读取:

 

注入:

打印:

注意:

如果-后面不加空格

此时用数组接收一下:

此时会将这些字符串作为一个整体去接收

 

4.2.5 配置Map

 

 


4.3 优缺点

优点:

  • 可读性⾼,写法简单, 易于理解
  • ⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态
  • ⽀持更多的编程语⾔,不⽌是Java中可以使⽤,在Golang,Python,Ruby,JavaScript中也可以使⽤

 缺点:

  • 不适合写复杂的配置⽂件
  • 对格式有较强的要求(⼀个空格可能会引起⼀场⾎案)

5. 案例(验证码实现)

5.1 Kaptcha 插件介绍 

5.1.1 原理

客户端和服务端都可以生成

1.生成内容(根据词库)

2.生成干扰项

3.两者组成一个图片返回

5.1.2 引⼊依赖

 <dependency>
 <groupId>com.oopsguy.kaptcha</groupId>
 <artifactId>kaptcha-spring-boot-starter</artifactId>
 <version>1.0.0-beta-2</version>
 </dependency>

5.1.3 ⽣成验证码

配置文件: 

kaptcha:
  items:
    # home captcha
    home:
      path: /home/captcha
      session:
        key:  HOME_KAPTCHA_SESSION_KEY
        date: HOME_KAPTCHA_SESSION_DATE

        # admin captcha
    admin:
      path: /admin/captcha
      session:
        key: ADMIN_KAPTCHA_SESSION_KEY
        date: ADMIN_KAPTCHA_SESSION_DATE

直接启动:

也可以加一些配置项

比如:图片大小:

字体大小:

5.2 需求

1. ⻚⾯⽣成验证码

2. 输⼊验证码,点击提交,验证⽤⼾输⼊验证码是否正确,正确则进⾏⻚⾯跳转 

5.3 校验

请求:/admin/check 

@RequestMapping("/admin")
@RestController
public class CaptchaController {

    //企业标准(建议):
    //常量定义: key: 全部大写, 单词之间使用下划线分割  value: 通常是小写, 以下划线分割
    private static final String KAPTCHA_SESSION_KEY = "ADMIN_KAPTCHA_SESSION_KEY";
    private static final String KAPTCHA_SESSION_DATE = "ADMIN_KAPTCHA_SESSION_DATE";
    //验证码的有效时间:ms
    private static final Long SESSION_TIMEOUT = 60 * 1000L;
    //验证成功: true
    //验证失败: false

    /**
     *  1. 从Session中获取到生成的验证码
     *  2. 比对前端传递的验证码和Session中存储的是否一样
     */
    @RequestMapping("/check")
    public Boolean check(String captcha, HttpSession session){

        if (!StringUtils.hasLength(captcha)){
            return false;
        }
        //从Session中获取验证码
        String saveCaptcha = (String)session.getAttribute(KAPTCHA_SESSION_KEY);
        Date saveDate = (Date)session.getAttribute(KAPTCHA_SESSION_DATE);
        //比对验证码
        if (captcha.equals(saveCaptcha)){
            //比对日期
            if (saveDate==null || System.currentTimeMillis() - saveDate.getTime()< SESSION_TIMEOUT){
                return true;
            }
        }
        return false;
    }
}

返回:true/false

输入验证码,跳转成功

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值