iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot中的yaml语法及静态资源访问问题
  • 652
分享到

SpringBoot中的yaml语法及静态资源访问问题

2024-04-02 19:04:59 652人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录配置文件-yaml基本语法:数据类型:web开发之简单功能分析静态资源的访问问题改变默认的静态资源的路径:配置文件-yaml 在Spring Boot开发中推荐使用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即可看见

到此这篇关于SpringBoot之yaml语法及静态资源访问的文章就介绍到这了,更多相关SpringBoot之yaml语法及静态资源访问 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SpringBoot中的yaml语法及静态资源访问问题

本文链接: https://www.lsjlt.com/news/131452.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作