springboot配置文件总结

springboot配置文件总结,第1张

springboot 本身支持多种灵活的配置方式,为开发 springboot 程序带来了很大的灵活性和扩展性,但是同时由于太灵活,经常会导致明明配置了相关属性,却没有生效。

本文总结了 springboot 配置文件的原理以及多个配置文件生效的顺序。

springboot 配置文件支持灵活的路径,以及灵活的文件名,用一个变量表达式总结如下:

部分源码如下:

当满足上述变量表达式的配置文件有多个时,会有一个配置的优先级。假设

上面每个条件组合起来,则最多有配置文件如下,且顺序从上到下:

获取属性时,按从上到下的顺序遍历由上述文件生成的属性资源对象 PropertySource ,如果遇到匹配的key直接返回。

总结一下:就是如果同一个key的属性只出现一次,则直接取该值即可。如果同一个key的属性出现多次,则取顺序靠前的属性资源对象。另外其中每个文件都是可选的。

需要注意的一点是:如果在同一个 location 下配置了多个文件名一样的文件,则只会取一个,比如在 classpath:/ ,有如下两个文件 applicationyml :

则只会根据 classloader 的 classpath 列表,选取第一个出现的文件。因为 springboot 加载配置文件时最底层是使用的下面的方法:

这两个方法只会获取 classloader 类的 ucp 属性里面第一个匹配到的值。如果对 springboot 自身的机制不满意,想获取所有的classpath:/路径下面的 applicaitonyml 文件,可以使用下面的方法:

本文总结了 springboot 配置文件的原理以及多个配置文件生效的顺序。如果存在增加了配置文件或者在配置文件里面增加了属性却没有生效,可以参考上面的 springboot 配置文件表达式和配置文件生效顺序进行排查。

后面还会有一篇文章讨论基于 springboot 配置原理如何实现自定义的配置读取方式。

1、Spring WebFlux是Spring Framework 50中引入的新的反应式Web框架

2、Flux和Mono

3、Spring WebFlux有两种风格:基于功能和基于注解的。基于注解非常接近Spring MVC模型,如以下示例所示:

4、Spring WebFlux应用程序不严格依赖于Servlet API,因此它们不能作为war文件部署,也不能使用src/main/webapp目录

5、可以整合多个模板引擎

官网地址

服务端主动推送:SSE (Server Send Event)

注意点:

说明:sse是建立连接不断开(长连接),然后客户端会自动请求,相比于长轮询效率更高;sse还有有断开重试的功能,简化版websocket

基于Spring框架,简化Spring应用初始搭建以及开发过程 ,内嵌tomcat,创建独立的Spring框架,不用配置xml。

提供Starter简化Maven配置。

starter是什么?一个启动器,可以将一系列的依赖包集成到应用里面

Spring Boot Application:一键运行一个独立的程序

自动配置注解:EanbleAutoConfigurtion

扫描该类所在的包以及子包:ComponentScan

SpringBootConfigurtion:该注解表明这个类是个配置类,等同于Configurtion

Spring Boot Application注解包含:(Spring Boot Configurtion ,ComponentScan ,EanbleAutoConfigurtion)

SpringBoot整合Dao两种方式:1,在每个dao写入Mapping注解2,在启动类加入Mapper Scan注解(dao层全限定名)

网上有很多教程,还是做一个备忘。

首先还是标准的SpringBoot程序,但是要 implements CommandLineRunner 接口。增加之后,会自动提示实现run方法,如下

此时就可以用标准的命令行方式执行该方法,如下

以上,args[0]会是UserInfoSupplier,args[1]会是3。

在Application类中可以使用Autowire,但是注意这里并不会自动结束。比如你想打印一行语句就执行完了,这是做不到的。那么怎么实现呢?其实非常简单。

因为这个类存在main方法,所以在其中调用run方法时增加close方法调用即可。

这样的话,运行完自定义的run方法后,就会退出线程。

SpringBoot基于Spring,集成SpringBoot,不会对原有项目的SpringMvc,MyBatis等框架产生冲突。

Spring Boot 会选择最适合的 Spring 子项目和第三方开源库进行整合。大部分 Spring Boot 应用只需要非常少的配置就可以快速运行起来。

1很多配置需要重新去学习

2会引入很多关联的依赖,要注意版本冲突的问题,需要保证版本统一

运行SpringbootApplication类的main()方法即可,因为spring-boot-starter-web内置tomcat组件,所以不需要配置tomcat。

1打包成Jar,使用jar –jar xxxjar命令直接运行

2打包成war,部署在外置的tomcat容器中

startAppsh

Tomcat的配置放在applicationproperties或者applicationyml中,示例applicationyml中:

Spring Boot使用了一个全局的配置文件applicationproperties,放在src/main/resources目录下或者类路径的/config下。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。

配置文件分为两种格式:yml格式、properties格式yml文件比properties文件更方便阅读和书写,推荐用yml格式;

区别:

Properties中springdatasourcedruidminIdle=5

等同于yml文件中

spring:

datasource:

druid:

minldle: 5

yml的格式要求:

1子属性前面要加两个空格

2冒号后面要有一个空格

3不要用TAB键进行缩进,否则解析yml文件时报错

默认情况下,applicationproperties和applicationyml文件可以放在以下四个位置:

1外置,在相对于应用程序运行目录的/congfig子目录里。

2外置,在应用程序运行的目录里

3内置,在config包内

4内置,在Classpath根目录

这个列表按照优先级排序,也就是说,src/main/resources/config下applicationproperties覆盖src/main/resources下applicationproperties中相同的属性。

目前开发环境可以选择第四种,把applicationproperties放在src\main\resources目录下。

测试环境和生产环境的配置和应用分离,通过

命令可以加载配置文件,多个配置文件用逗号分离,例如:

或者:

应用启用时默认会加载applicationproperties文件。

读取属性的方式:

属性加载在bean中

使用属性

详情如下:

1官网的解释 Spring在官方首页是这么说的:说使用SpringBoot可以构造任何东西,SpringBoot是构造所有基于Spring的应用程序的起点,SpringBoot在于通过最少的配置为你启动程序。

2我的理解 SpringBoot是Spring开源项目的一个子项目,是Spring组件的一站式解决发案,其目的是简化Spring应用的初始搭建和开发过程。

3SpringBoot的优缺点 其实就是变得简单,快捷,方便,我们以前自己搭建一个Spring Web项目是不是需要配置webxml,加载Spring和SpringMvc,在配置数据库连接配置Spring事务,

以上就是关于springboot配置文件总结全部的内容,包括:springboot配置文件总结、SpringBoot(七、sse,响应式编程)、SpringBoot-等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9711433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存