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即可看见

参考:
结束:
如果你看到这里或者正好对你有所帮助,希望能点个关注或者推荐,感谢;
有错误的地方,欢迎在评论指出,作者看到会进行修改。
SpringBoot之yaml语法及静态资源访问的更多相关文章
- 聊聊、SpringBoot 静态资源访问
SpringBoot 1.X 版本和 SpringBoot 2.X 版本在静态资源访问上有一些区别,如果直接从 1.X 升级到 2.X 肯定是有问题的.这篇文章就来讲讲这方面问题,也是项目中的坑. 先 ...
- SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆
在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringB ...
- IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404
IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404 .embody{ padding:10px 10px 10px; margin:0 -20px; borde ...
- springboot + thymeleaf静态资源访问404
在使用springboot 和thtmeleaf开发时引用静态资源404,静态资源结如下: index.html文件: <!DOCTYPE html> <html xmlns:th= ...
- SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径
Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class Sta ...
- springboot学习入门简易版四---springboot2.0静态资源访问及整合freemarker视图层
2.4.4 SpringBoot静态资源访问(9) Springboot默认提供静态资源目录位置需放在classpath下,目录名需要符合如下规则 /static /public /resourc ...
- springboot 静态资源访问,和文件上传 ,以及路径问题
springboot 静态资源访问: 这是springboot 默认的静态资源访问路径 访问顺序依次从前到后(http://localhost:8080/bb.jpg) spring.resourc ...
- springboot配置静态资源访问路径
其实在springboot中静态资源的映射文件是在resources目录下的static文件夹,springboot推荐我们将静态资源放在static文件夹下,因为默认配置就是classpath:/s ...
- Spring Boot 静态资源访问原理解析
一.前言 springboot配置静态资源方式是多种多样,接下来我会介绍其中几种方式,并解析一下其中的原理. 二.使用properties属性进行配置 应该说 spring.mvc.static-pa ...
随机推荐
- Java持久层框架Mybatis入门
MyBatis是什么 MyBatis是Java的持久层框架,GitHub的star数高达15.8k,是Java技术栈中最热门的ORM框架之一.它支持自定义SQL.存储过程以及高级映射,可以通过XML或 ...
- 有模有样解决Flutter里Webview无法访问HTTP页面的问题
探索过程 Android9(好像是吧)开始谷歌就默认不让开发者访问不安全HTTP内容了,如果非要用HTTP,那必须在networkSecurityConfig里配置cleartextTrafficPe ...
- Linux命令大全之查看登陆用户信息
1,w +回车 2.who +回车 3.last+回车 4.lastlog+回车
- Jenkins+Github+Nginx实现前端项目自动部署
前言 最近在搭建一个自己的网站,网站框架搭好了要把项目放到服务器运行,但是每次更新网站内容就要手动部署一次,实在很麻烦,于是就想搭建一套自动化部署的服务.看了一些案例最后选用现在比较主流的Jenkin ...
- Java-Java8特性(更新中)
Java8新特性 之前零零散散写了很多java8的内容,今天做一个整理,也算是整理用到的内容,当然细化的话还有很多,只是说暂时用不到,为了面试的话已经够了 日期计算 Lambda表达式 函数式接口(比 ...
- [.NET Core知识点回顾]-自动内存管理
自动内存管理是公共语言运行时在托管执行过程中提供的服务之一.公共语言运行时的垃圾回收器为应用程序管理内存 的分配和释放.对开发人员而言,在开发托管应用程序时不必编写执行内存管理任务代码. 分配内存 初 ...
- 项目启动报错:Redis health check failed
最近是重新开发整个项目,在上线测试的时候发现这个问题. 项目环境:SpringBoot2.x+Consul+Redission+Maven 报错的信息如下: o.s.b.a.redis.RedisHe ...
- c++实现希尔密码
实验名称: 希尔密码的实现(c++版;本文只以26个大写英文字符作为加密后的密文的可选项) 实验原理: 引用知识: 记 Zm={0,1,2,...,m-1} 定义1:设A为定义在集合Zm 上的n阶方阵 ...
- 深入学习Netty(1)——传统BIO编程
前言 之前看过Dubbo源码,Nacos等源码都涉及到了Netty,虽然遇到的时候查查资料,后面自己也有私下学习Netty并实践,但始终没有形成良好的知识体系,Netty对想要在Java开发上不断深入 ...
- 97、配置yum源仓库服务器
(服务端(双(外,内)网卡)--客户端(内网)) YUM主要用于自动安装.升级rpm软件包,它能自动查找并解决rpm包之间的依赖关系.要成功的使用YUM工具安装更新软件或系统, 就需要有一个包含各种r ...