IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot中的yaml语法及静态资源访问问题 -> 正文阅读

[Java知识库]SpringBoot中的yaml语法及静态资源访问问题

配置文件-yaml

在spring Boot开发中推荐使用yaml来作为配置文件。

基本语法:

  • key: value;kv之间有空格
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释
  • 字符串无需加引号,如果要加,’'与""表示字符串内容 会被 转义/不转义

数据类型:

可以使用的数据类型有date\boolean\string\number\null

单个字面量:

k: v?? #k:空格v

对象,键值对的集合,包括:map、hash、set、object

普通写法:

k:
?k1: v1
?k2: v2
?k3: v3

行内写法

k: {k1: v1,k2: v2,k3: v3}

数组:一组按次序排列的值。array、list、queue

普通写法:

k:?
?- v1
?- v2
?- v3

行内写法

k: [v1,v2,v3]

编写之前,我需要配置yaml中的提示插件:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

如果在打包的时候不需要打包该插件,可以在插件中设置如下:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
            </exclude>
        </excludes>
    </configuration>
</plugin>

安装完成后,需要启动一下项目,让他生效。

实例:

Person类:

@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String userName;
    private Boolean boss;
    private Date birth;
    private Integer age;
    private Pet pet;
    private String[] interests;
    private List<String> animal;
    private Map<String, Object> score;
    private Set<Double> salarys;
    private Map<String, List<Pet>> allPets;
}

Pet类:

@Data
public class Pet {
    private String name;
    private Double weight;
}

在recources资源目录下创建application.yaml文件,使用yaml表示上述的属性:

person:
  user-name: xbhog
  boss: false
  birth: 2021/7/27
  age: 18
  pet: {name: 阿毛,weight: 23}
  interests: [唱歌,跳舞,玩游戏]
  animal:
    - jerry
    - mario
  score:
    english: 30
    math: 70
 #第二种写法:score: {english: 30,math: 70}
  salarys:
    - 277
    - 8999
    - 10000
  all-pets: #该allPet有两个k(sick、health),每个key包含一个list
    sick: 
      - {name: tom}
      - {name: jerry,weight:47}
    health: [{name: mario,weight: 47}]

创建一个controller来测试我们的配置文件有没有生效:

因为我们之前已将将person中的属性映射到了application.yaml文件中,并且把person加入到容器中。

@Component
@ConfigurationProperties(prefix = "person")

所以我们在myconfig中做测试:

package com.xbhog.controller;

import com.xbhog.popj.Car;
import com.xbhog.popj.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    @Autowired   //自动配置,找到容器中的person
    Person person;
    
    @RequestMapping("/person")
    public Person person(){
        return person;
    }
}

结果如图所示:

Web开发之简单功能分析

静态资源的访问问题

只有静态资源放在以下的文件目录中才可以:

/static/、public/、 resources/ 、META-INF/resources

最后一个测试没有成功,访问META-INF/resources/img.png返回404,如果有感兴趣的小伙伴可以测试一下。

访问的方法是:当前项目根路径/ + 静态资源名 (localhost:8080/xxx.img)

假如我们的请求路由跟图片的名字重复了,spring boot是先请求哪个呢?

我们创建一个controller:

package com.xbhog.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class mycontro {
    @RequestMapping("/publicimg.png")
    public String demo(){
        return "asss";
    }
}

让它与public文件夹下面的图片相同:

开启主程序测试结果如下:

当我们随便请求一个不存在的图片,会返回给我们404.

从上面可以看出来,请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面

改变默认的静态资源的路径:

在application.yaml文件中:

spring:
  mvc:
    static-path-pattern: /res/**

这样我们访问资源的时候必须啊要加res前缀.

但是在欢迎页支持和自定义Favicon上需要关掉·tatic-path-pattern.如果开启的话,index.html与favicon是不起效果的。

如果设置favicon设置的完后,不起作用,可以禁用下浏览器缓存或者重启下idea.

设置的方式(直接放到静态资源文件夹下即可):

直接访问localhost:8080即可看见

##结束
下面是博主剪辑的视频资料 可能与文章无关 希望大家可以支持一下哦!谢谢大家支持!

UP主:我只需一小时带你玩转Git&Github B友直呼:菜鸡这不是有手就行?

【面试必备】阿里资深架构师详解 2021最新 Java秒杀系统高性能高并发实战项目

Java零基础小白看完我这个系列视频都可以自己做实战项目啦!拿捏呢!

2021最新版lntellij IDEA 安装、配置、环境变量教学

2021最新算法训练营:左神带你 爆刷LeetCode算法(1000题) 进大厂的必修算法课程!

B站首发 花费12980巨资购买的 微服务SpringCloud Alibaba全集

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:28:00  更:2021-08-12 16:28:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 6:28:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码