Springboot
文章平均质量分 92
CoderOu
一个相信努力就会有结果的程序员,以兴趣驱动技术!
------ CoderOu
展开
-
springboot+数据同步框架canal,将mysql的数据同步到多个地方,比如其他库,redis,es,mq等
现在正在做一个项目,人力资源方面的,有个各个业务都用用户表息息相关,用户服务和其他各个服务相互独立,所以无法进行关联查询,并且业务需要,很多都需要去关联到用户表,所以比较纠结,故有如下方案:方案一:将用户表经常使用到的字段冗余到各个业务表,用户信息修改之后,发送一个消息到mq,然后涉及到冗余用户字段的服务去订阅这个队列,然后进行修改冗余字段数据,其实这个方法也不错。方案二:利用canal,各个服务拆分出去的库都包含用户表。由于项目中需要将一些数据同步到redis和es,使用到了canal,所以利用c原创 2022-01-27 21:23:00 · 4706 阅读 · 0 评论 -
使用springboot启动监听器ApplicationContextInitializer实现外部jar包设置BeanNameGenerator,解决控制层beanName冲突问题
解决方案直通车注:如果不看解决思路,只看解决方案的,可以滚动到最后面查看解决方案!最新在搭建springcldoualibaba微服务架构,由于习惯了之前的写法(控制层将后台,APP端,小程序端,公众号端分包管理,所以同一个业务的控制器,又懒得每个控制器指定一个名字,对于spring来说,类名一样,那么名字就一样,则会启动报错),则自定义了BeanNameGenerator,之前对于单体springboot项目来说,指定这个很简单,如下所示@SpringBootApplication(nameGen原创 2022-01-12 12:22:44 · 958 阅读 · 1 评论 -
Spring扩展点之BeanFactoryPostProcessor:彻底搞懂原理以及使用场景【源码分析】
spring框架流行了这么多年,地位至今不被动摇,除了spring全家桶的生态之外,它给开发者的提供的扩展也是值得一提的。那么今天就来聊聊Spring扩展点之BeanFactoryPostProcessor。这个扩展点是发生在bean实例化之前,BeanDefinition读取完之后。所以我们在这里可以获取到BeanDefinition,以改变他默认的实例化方式。由于文章内容是基于源码角度来讲的,考虑到有些朋友不需要看的如此的深入,所以在此贴出其简单的使用方式:加上@Component注解,使其加入到s原创 2020-08-30 16:47:33 · 7682 阅读 · 1 评论 -
【springboot源码解读系列】(五、springboot启动之解析META-INF/spring.factories的SpringFactoriesLoader详细解读)
上一讲【springboot源码解读系列】(四、springboot启动之SpringApplicationRunListeners:通知所有监听器,系统启动中…用于非常早的初始化)说到通过SpringFactoriesLoader加载META-INF/spring.factories获取我们的自定义监听器和启动器。那么这讲就来揭开SpringFactoriesLoader神秘的面纱:讲解都在注释里面:值得学习的是他的这种设计理念,通过指定规范,然后对其使用者提供扩展,springboot的启动器原理也原创 2020-07-27 17:41:33 · 1785 阅读 · 1 评论 -
【springboot源码解读系列】(四、springboot启动之SpringApplicationRunListeners:通知所有监听器,系统启动中...用于非常早的初始化)
SpringApplicationRunListeners系统运行监听器,监听者springboot项目运行各个生命周期,这节讲解starting,用于系统很早的初始化扩展,如果不想看细节,直接想了解SpringApplicationRunListeners各个周期的朋友,直接划到文章末尾,有对各个周期的详细注释,它的周期是围绕着项目启动来做的。在【springboot源码解读系列】(一、springboot创建SpringApplication实例,定制SpringApplication)中我们讲到了,原创 2020-07-26 23:07:03 · 681 阅读 · 0 评论 -
【springboot源码解读系列】(三、springboot启动使用的计时器StopWatch:短小精悍功能多,设计简单,容易阅读)
上一讲【springboot源码解读系列】(二、springboot创建SpringApplication实例后,正式启动之前的准备工作)说到,springboot在run一开始就使用到了一个计时器,并且开始计时,那么我们今天看一下他这个计时器的作用吧。他的计时方式和我们平时的System.currentTimeMillis()又有什么不同,他的功能强大在哪里?这个类是在org.springframework.util包下面的,是spring的一个工具包。我们经常使用spring,可以看一下他下面有哪些工原创 2020-07-24 22:41:22 · 643 阅读 · 0 评论 -
【springboot源码解读系列】(二、springboot创建SpringApplication实例后,正式启动之前的准备工作)
上一节:【springboot源码解读系列】(一、springboot创建SpringApplication实例,定制SpringApplication)讲到了创建SpringApplication实例时,springboot做的一些事情:设置基础资源、推断应用程序的环境、通过SpringFactories加载我们自定义的初始化器和监听器、推断主入口类。创建完实例之后,调用了run方法开始运行。在实际开始工作之前需要做一些准备工作,就像我们上班一样,在开始写代码之前,需要做一些比如打开电脑,编辑器,抽支原创 2020-07-23 23:19:48 · 774 阅读 · 2 评论 -
【springboot源码解读系列】(一、springboot创建SpringApplication实例,定制SpringApplication)
源码地址:springboot2.x源码解读仓库,源码中包含有注释使用过springboot的都知道,我们创建一个主启动类,然后创建一个main函数,然后SpringApplication.run(Application.class); 我们的程序就启动起来了,至于怎么启动起来的,当前是什么样的环境,我们的tomcat容器在哪里启动的等,对于使用者,无需关心。但是对于好奇心比较人来说(比如我),就像一探究竟,他是通过什么样的方式来判断我们的应用程序是什么环境的,他又是如何加载我们的bean的,tomcat原创 2020-07-22 23:15:15 · 438 阅读 · 0 评论 -
【spring方法最全面,注释最全面的上下文工具类,拿走不谢,不来复制去使用太可惜了】SpringContextUtils
直接复制即可使用,注释很全。如果想看看具体细节的,提供更全面的方法的朋友们,请移步到:【springboot高级】(五:九大常用Aware实现之ApplicationContextAware (源码篇))package com.osy.util;import org.springframework.beans.BeansException;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import原创 2020-07-05 22:13:19 · 371 阅读 · 0 评论 -
【springboot高级】(五:九大常用Aware实现之ApplicationContextAware (源码篇))
上篇:【springboot高级】(五:九大常用Aware实现、作用以及自定义实现类使用,例子:ApplicationContextAware (使用篇))我们将到了Aware的作用以及基本使用,并且例举了最常用的九大Aware实现,以表格的形式展示了其作用。那么这节我们将详细讲解ApplicationContextAware,他传递给我们的参数:上下文对象ApplicationContext我们应该如何使用,它给我提供了哪些api,那些api我们工作中比较常用。使用如下:package com.o原创 2020-07-05 22:12:24 · 976 阅读 · 0 评论 -
【springboot高级】(五:九大常用Aware实现、作用以及自定义实现类使用,例子:ApplicationContextAware (使用篇))
ApplicationContextAware、EnvironmentAware、ApplicationEventPublisherAware、BeanNameAware、BeanClassLoaderAware、BeanFactoryAware、EmbeddedValueResolverAware、ResourceLoaderAware、MessageSourceAware。首先来介绍一下Aware:指示bean有资格被特定框架对象的Spring容器,通过回调样式的方法。实际的方法签名由各个子接口原创 2020-07-05 14:08:40 · 1675 阅读 · 0 评论 -
【springboot高级】(四:自定义初始化器,实现ApplicationContextInitializer「ConfigurableApplicationContext」设置必须配置的属性)
在我们自定义启动器之自动装配的时候,有些属性需要进行配置,但是如果不配置的话,可能会引起系统异常。那么这个时候我们就需要设置一些属性必须配置,在系统初始化的时候就应该进行检查,而不是等系统运行起来,运行到需要那个配置的时候在检查就来不及了。那么今天我们通过自定义系统初始化器来进行实现:详细的自定义系统初始化器请看【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口。(使用篇))同时如果想看springboot实现的源码的,原创 2020-07-03 17:48:19 · 748 阅读 · 0 评论 -
【springboot高级】(三:自定义启动器之自动装配:EnableAutoConfiguration ,封装minio,只是用minio做个简单的例子,具体的还需要根据自己的需求更改{IDEA})
自定义启动器实现minio自动装配原创 2020-07-03 11:46:25 · 440 阅读 · 0 评论 -
【springboot高级】(二:自定义系统监听器,实现ApplicationListener接口。(使用篇))
springboot在系统启动的时候,提供了很多的监听,有时候我们需要根据一些业务,在启动的时候监听springboot启动的某个节点,然后做相应的事情,那么这节就来讲一下如何实现自定义监听器,在springboot发送事件的时候,我们能够监听到。(注意:自定义监听器和自定义初始化器原理一波一样,方式也是一模一样,如果需要看自定义初始化器的,可以查看【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口。(使用篇)))首先我们需原创 2020-07-02 09:26:57 · 1030 阅读 · 0 评论 -
【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口之在配置文件中配置。(源码篇))
在【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口。(使用篇))讲到了说通过配置文件中进行配置的优先级比较高,而且我们打的@Order注解对其没有效果。那么这节就通过源码的方式来揭开他的真面目。关键字:DelegatingApplicationContextInitializer、order、context.initializer.classes、spring.factories在讲之前,我们先熟悉一下Delegating原创 2020-07-01 13:37:58 · 361 阅读 · 0 评论 -
【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口之向SpringApplication对象中添加初始化器。(源码篇))
上一篇【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口之SpringFactoriesLoade加载。(源码篇))我们讲到了通过SpringFactoriesLoade加载的方式配置我们自定义初始化器的源码解析。我们得知Springboot是在创建SpringApplication实例的时候通过pringFactoriesLoade加载所有的spring.factories文件,然后将其实例化存储在initializers属原创 2020-07-01 12:48:25 · 212 阅读 · 0 评论 -
【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口之SpringFactoriesLoade加载。(源码篇))
上一篇【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口。(使用篇))我们讲到了,注册自定义应用初始化器的三种方式:让SpringFactoriesLoader进行加载,配置spring.factories向SpringApplication对象中添加Initializers在配置文件中配置,这种方式优先级最高,跟@Order注解无关那么我们这篇从源码的角度来看一下他们是如何注册进去并且执行的。一、SpringFa原创 2020-07-01 11:15:25 · 5158 阅读 · 0 评论 -
【springboot高级】(一:自定义容器初始化器的三种方式,实现ApplicationContextInitializer接口。(使用篇))
ApplicationContextInitializer的实现类用于spring在刷新容器之前,加载完上下文之后的一个回调函数,并且会将ConfigurableApplicationContext实例传递过来,让我们开发者可以根据一些上下文做一些定制化的操作。该实现类可以通过注解**@Order**指定执行顺序,值越小,优先级越高。首先我们先实现ApplicationContextInitializer接口package com.osy.initializer;import org.springf原创 2020-06-30 23:54:55 · 1327 阅读 · 0 评论 -
Springboot整合MyBatis, yml配置,超详细从mybatis-spring-boot-starter根据源码进行配置,MybatisProperties类中的属性【源码版】)
都知道springboot整合第三方框架,我们开发者使用的时候,大部分都是只需要在pom文件中导入相关的start依赖即可,springboot提供的start能够无缝的整合第三方框架,今天我们就来看一下mybatis-spring-boot-starter中的自动装配。如果对springboot的启动器不清楚的,可以看一下我的首先我们看一下mybatis-spring-boot-starter这个依赖他帮我们管理了哪些依赖<?xml version="1.0" encoding="UTF-8"原创 2020-06-30 14:04:57 · 2876 阅读 · 0 评论 -
Springboot整合MyBatis(七:Mybatis的xml配配置文件,详细配置之插件(plugins)监控dao层,自定义插件(浅剖分页插件实现原理))
MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOut原创 2020-06-29 14:21:27 · 512 阅读 · 0 评论 -
Springboot整合MyBatis(六:Mybatis的xml配配置文件,详细配置之类对象工厂(objectFactory)查询是创建对象实例操作一下)
每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认无参构造方法,要么通过存在的参数映射来调用带有参数的构造方法。 如果想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现这是官网对其做的一个解释,说的意思是:我们在通过select语句查询数据库时,查询的结果集会映射到我们指定的javaBean上面。比如查一个集合List,那么集合里面的每一个元素在创建实例的时候,如果不设.原创 2020-06-27 23:21:03 · 404 阅读 · 0 评论 -
Springboot整合MyBatis(五:Mybatis的xml配配置文件,详细配置之类型处理器(typeHandlers(json字符串映射实体)))
MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。提示 从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。你可以重写已有的类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。 具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.ap原创 2020-06-27 22:39:17 · 1205 阅读 · 0 评论 -
Springboot整合MyBatis(四:Mybatis的xml配配置文件,详细配置之类型别名(typeAliases))
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。比如:我们不给java类型设置别名 <select id="getById" parameterType="int" resultType="com.osy.entity.User"> select id, name, age from user_info where id = ${id} </select>com.osy.entity.User这个全限原创 2020-06-26 01:28:03 · 1458 阅读 · 0 评论 -
Springboot整合MyBatis(三:Mybatis的xml配配置文件,详细配置之settings)
这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。官网是这样讲的,证明这个配置是很重要的。这里就把官网的所有配置根据自己的理解来写一遍:原创 2020-06-26 01:02:41 · 968 阅读 · 0 评论 -
Springboot整合MyBatis(二:Mybatis的xml配配置文件,详细配置之properties配置)
上一节Springboot整合MyBatis(一:MyBatis-Spring-Boot-Starter)讲到了springboot整合Mybatis,通过MyBatis-Spring-Boot-Starter启动器进行整合,其中讲到了一个配置项:config-location,Mybatis的配置文件位置,那么这节就来详细说一下Mybatis的xml配置文件。后面咱们再细说java配置(懂了xml配置,java配置就水到渠成了)。MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属原创 2020-06-25 23:45:12 · 1371 阅读 · 0 评论 -
Springboot整合MyBatis(一:MyBatis-Spring-Boot-Starter)
pom文件配置:增加mybatis的启动器依赖和驱动依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency原创 2020-06-24 23:27:02 · 1278 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序 十二Spring Web MVC 之ConfigurableWebBindingInitializer 初始化参数绑定配置】)
这节来说springboot中的初始化参数配置,使用过SSM的都知道,springmvc中的初始化参数配置是可以通过@InitBinder来实现参数初始化配置,示例:以去除字符串前后空格为例:package com.osy.config;import com.osy.editorregistrar.ZyDateEditor;import org.springframework.beans.propertyeditors.StringTrimmerEditor;import org.spring原创 2020-06-22 14:27:56 · 444 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【十一Spring Web MVC 之WebMvcConfigurer(addViewControllers方法,配置预先处理控制器,比如:404)】)
addViewControllers是预先配置一些没有逻辑的控制器,后面可能根据一些情况,然后转发到这里,这里就简单使用一下吧,使用的情况应该不是很多。package com.osy.config;import com.osy.annotation.AdminController;import com.osy.annotation.AppController;import org.springframework.context.annotation.Bean;import org.springf原创 2020-06-21 21:08:11 · 803 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【十Spring Web MVC 之WebMvcConfigurer(addCorsMappings方法,配置跨域请求处理。)】)
跨域这个词,我相信在前后端分离项目中,应该是比较常见的一个词语,跨域具体我这里就不细说了,直接上代码看看springboot中如何配置跨域的:(代码中注释很详细)package com.osy.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class WebMvc原创 2020-06-21 20:48:25 · 498 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【九Spring Web MVC 之WebMvcConfigurer(addResourceHandlers方法,添加静态资源路径映射)】)
这个比较常用,配置静态资源与请求地址映射,使得springmvc不对其进行拦截,并且能够快速找到:代码如下:package com.osy.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class WebMvcConfiguration { @Bean原创 2020-06-21 20:33:24 · 2713 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【八Spring Web MVC 之WebMvcConfigurer(addInterceptors方法,添加生命周期拦截器)】)
我们在项目中,有时候需要监听一下从发出请求到后台处理渲染页面完成这一时间段内的生命周期,并根据实际业务加以限制,比如比较常用的就是拦截所以验证是否登录。那么springmvc给我们提供了添加自定义生命周期拦截器的配置,那就是addInterceptors,那么我们就来学习一下他的使用吧。1、创建配置类,并且通过注解@Bean的方式返回WebMvcConfigurer加入到spring容器里面package com.osy.config;import com.osy.annotation.AdminC原创 2020-06-21 14:30:39 · 3870 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【七Spring Web MVC 之WebMvcConfigurer(configureContentNegotiation方法,内容协商机制)】)
今天来说说内容协商机制。内容协商机制这个太专业的名称,说下来,头一次听的话,估计是无法理解他其中的含义的。那么我这里就用大白话说一下吧。就是客户端向服务端发送一个请求,然后服务端给客户端返回什么格式的数据的,是需要两端进行协商的,既然是协商,那么他们有什么协议或者规则呢?下面一探究竟:一般现在服务端返回的数据基本都是json格式的数据,以前返回的是xml,那么现在如果要返回xml格式的数据,springmvc也是提供得有方法的。@RequestMapping系列注解中produces可以指定返回原创 2020-06-21 12:05:39 · 1703 阅读 · 5 评论 -
Springboot官网学习(7、Web应用程序【六Spring Web MVC 之WebMvcConfigurer(configurePathMatch方法,给控制器加上统一前缀)】)
WebMvcConfigurer是springMvc提供的一个可以扩展的配置springmvc的,那么在springboot中如何使用呢?springboot官网提到WebMvcConfigurer是配置跨域Cors引出的:官方实例:@Configuration(proxyBeanMethods = false)public class MyConfiguration { @Bean public WebMvcConfigurer corsConfigurer() {原创 2020-06-20 23:11:52 · 3679 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【五Spring Web MVC 之模板引擎以及静态资源】)
之前我们写的项目中,使用SSM中,我们的静态资源需要我们在配置文件中进行配置的,但是springboot的约定大于配置的理念,就节省了我们去手动配置,难么他约定的在哪里,然后springmvc不进行拦截呢?默认情况下,Spring Boot从类路径中名为/static(/public或/resources或/META-INF/resources)的目录或根目录提供静态内容ServletContext。它使用ResourceHttpRequestHandlerSpring MVC中的from,因此您可以通原创 2020-06-20 22:00:51 · 123 阅读 · 3 评论 -
Springboot官网学习(7、Web应用程序【四Spring Web MVC 之MessageCodesResolver 参数绑定,全局异常处理参数绑定错误】)
Spring MVC的具有产生错误代码从绑定错误的渲染错误消息的策略:MessageCodesResolver。如果您设置spring.mvc.message-codes-resolver-format属性PREFIX_ERROR_CODE或POSTFIX_ERROR_CODE,Spring Boot会为您创建一个(请参阅中的枚举DefaultMessageCodesResolver.Format感觉一头雾水:于是搜索了一波,作用:在springmvc进行参数绑定的时候,会出现一些绑定错误,那么他就.原创 2020-06-19 19:22:55 · 1259 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【三Spring Web MVC 之自定义JSON序列化器和反序列化器,让你的项目起飞】)
上一节Springboot官网学习(7、Web应用程序【一 Spring Web MVC 之HttpMessageConverters消息转换器】)我们学习了自己定制消息转换器,SpringMVC框架使用HttpMessageConverter转换器类来转换http请求数据和响应数据。如果需要配置的话,通过注解@Bean来返回我们自己配置的消息转换器。HttpMessageConverter在转换http请求和响应的过程中,就需要将java对象转为JSON字符串,也叫做序列化;或者将JSON字符串转为jav原创 2020-06-18 23:34:16 · 305 阅读 · 1 评论 -
Springboot官网学习(7、Web应用程序【二Spring Web MVC 之HttpMessageConverters消息转换器】)
Spring MVC使用HttpMessageConverter接口来转换HTTP请求和响应。开箱即用中包含明智的默认设置。例如,可以将对象自动转换为JSON(通过使用Jackson库)或XML(通过使用Jackson XML扩展(如果可用)或通过使用JAXB(如果Jackson XML扩展不可用))。默认情况下,字符串编码为UTF-8。消息转换器,用在什么地方?springmvc中是如何使用的?,他有默认配置,我们如何扩展?个人觉得这三个问题,都有答案了的话,基本在项目开发中问题不大了,当然如果想.原创 2020-06-17 14:03:52 · 185 阅读 · 0 评论 -
Springboot官网学习(7、Web应用程序【一 Spring Web MVC Application之@Controller和@RestController、Rest风格接口写法】)
众所周知,spring在后台web领域的霸主地位呆了很多年了,springmvc和spring的无缝整合让开发者减轻了很多负担,spring全家桶成为了web程序开发的必然之选。那么今天我们就来学习一下springboot开发Web应用程序:Spring Boot非常适合于Web应用程序开发。您可以使用嵌入式Tomcat,Jetty,Undertow或Netty创建独立的HTTP服务器。大多数Web应用程序都使用该spring-boot-starter-web模块来快速启动和运行。您还可以选择使用该s原创 2020-06-17 13:21:30 · 269 阅读 · 0 评论 -
Springboot官网学习(6、深入Springboot之外部化配置【三yml配置项绑定到实体Bean】)
由于上节:Springboot官网学习(6、深入Springboot之外部化配置【三使用yaml代替properties】)讲到yaml可以使用yml,作为程序员,一切从简,所以后面就以yml来讲了我们应该知道spring中,如果想要把properties中配置的值,绑定到我们的config实体中,通常使用的是@Value注解来实现,springboot中的properties中,也是通过@Value来实现的。不过yml文件,如果绑定在config实体中,官方不建议使用@Value注解,因为存在像.原创 2020-06-16 11:05:08 · 284 阅读 · 0 评论 -
Springboot官网学习(6、深入Springboot之外部化配置【三使用yaml代替properties】)
使用yaml代替properties这是官网的原话:Using YAML Instead of Properties既然官方都说了,使用yaml来代替properties,证明一定有它的好处或者便捷之处yaml是JSON的超集,因此是一种用于指定层次结构配置数据的便捷格式从这句话看出,yaml有层次结构的,看起来容易理解,便捷,可能比Propertis写得少Springboot自带支持yaml格式的文件,只有在classpath(src/man/resources)下面有。Springb.原创 2020-06-16 10:03:14 · 242 阅读 · 0 评论