Spring Boot 配置加载顺序详解。
使用 Spring Boot 会涉及到各种各样的配置,如开发、测试、线上就至少 3 套配置信息了。Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发、测试、线上环境使用不同的配置。 在 Spring Boot 里面,可以使用以下几种方式来加载配置。本章内容基于 Spring Boot 2.0 进行详解。 1、properties文件; 2、YAML文件; 3、系统环境变量; 4、命令行参数; 等等…… 我们可以在 Spring Beans 里面直接使用这些配置文件中加载的值,如: 1、使用 @Value 注解直接注入对应的值,这能获取到 Spring 中 Environment 的值; 2、使用 @ConfigurationProperties 注解把对应的值绑定到一个对象; 3、直接获取注入 Environment 进行获取; 配置属性的方式很多,Spring boot使用了一种独有的 PropertySource 可以很方便的覆盖属性的值。 配置属性加载的顺序如下: 1、开发者工具 `Devtools` 全局配置参数; 2、单元测试上的 &...
Spring Boot 配置文件 bootstrap vs application 到底有什么区别?
用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .properties) 为什么会有这两种配置文件呢?大家都清楚它们的区别和具体使用场景吗? bootstrap/ application 的区别特意去翻了下 Spring Boot 的官方文档,没有找到关于这两种文件的具体定义,然后再翻了下 Spring Cloud 的官方文档找到了它们的区别。 https://cloud.spring.io/spring-cloud-static/Greenwich.SR1/single/spring-cloud.html#_the_bootstrap_application_context 认真阅读了下文档,原文大概意思是这样。 Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程...
Spring Boot 面试,一个问题就干趴下了!
最近栈长面试了不少人,其中不乏说对 Spring Boot 非常熟悉的,然后当我问到一些 Spring Boot 核心功能和原理的时候,没人能说得上来,或者说不到点上,可以说一个问题就问趴下了! 这是我的问题: 我看你上面写了熟悉 Spring Boot,那你能讲下为什么我们要用 Spring Boot 吗? 下面我列几个最常见的三个回答: A:Spring Boot 最主要是不用 XML 配置,可以用 Java 来配置 bean,省去了许多配置文件。 我又问:Spring 本身就可以用 Java 配置代替 XML 配置,和 Spring Boot 有什么关系呢? 然后对方就吱吱唔唔了…… B:Spring Boot 我们用来做 Spring Cloud 微服务。 我又问:微服务和 Spring Boot 有什么关系?不用 Spring Boot 行不行? 然后对方就吱吱唔唔了…… C:Spring Boot 可以打 jar 包部署,内部集成了Tomcat。 这个确实是 Spring Boot 的特色,但是我还是觉得没有答到关键点上。 然后我继续问,如果不考虑打 jar 包部署呢...
Spring Boot 配置随机数技巧
Spring Boot支持在系统加载的时候配置随机数。 添加config/random.properties文件,添加以下内容: #随机32位MD5字符串 user.random.secret=${random.value} #随机int数字 user.random.intNumber=${random.int} #随机long数字 user.random.longNumber=${random.long} #随便uuid user.random.uuid=${random.uuid} #随机10以内的数字 user.random.lessTen=${random.int(10)} #随机1024~65536之内的数字 user.random.range=${random.int[1024,65536]} 添加绑定类: import org.springframework.boot...
Spring Boot 面试,一个问题就干趴下了!(下)
哈哈,上墙的朋友开不开森? 不错,约定优(大)于配置确实是 Spring Boot 整个框架的核心思想。 那么怎么理解约定优于配置呢? 百度百科定义: 约定优于配置(convention over configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 总结就是两点: 1、约定一些推荐的默认配置; 2、开发人员只需要规定不符约定的部分; 这样做的好处就是,如果约定的默认配置符合我们的要求,省略即可,反之,再进行额外配置。 从 Spring Boot 中提供的默认的配置文件(application.properties/yml),再到默认值自动配置,都可以看出约定带来的便利,以及节省大量的配置。 来看下 Spring Boot 中一个自动配置的源码实例吧: @Configuration @ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class, MultipartConfigEl...
Spring Boot 集成Mybatis双数据源
这里用到了Spring Boot + Mybatis + DynamicDataSource配置动态双数据源,可以动态切换数据源实现数据库的读写分离。 添加依赖加入Mybatis启动器,这里添加了Druid连接池、Oracle数据库驱动为例。 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <dependency> <groupId>com.oracle</...
公司不用 Spring Boot,果断离职了!
面试问到离职原因,我想这是很多面试者的痛,包括我自己,曾经也被离职原因所坑过。 ](https://mp.weixin.qq.com/s/7g4s8uXz1ZpVuyjCu3jcoQ)》,希望可以给职场小白一点点经验,少走弯路。 话说最近栈长面试了个两三年的 Java 开发程序员,离职原因说出来就是砸自己的脚,真是感慨万千啊,且听我慢慢道来。 我让他做个简单的自我介绍,叽里咕噜一大堆,持续好些分钟,我实在没耐心听下去了,但也不好强行打断,中间趁他换气还是插了句话让他停止自我介绍了。 从头到尾表现出一股很强烈的学习欲望,说他很爱好学习,平时还自建 Demo 学习 Spring Boot、Spring Cloud 相关技术什么的。然而,当我问到一些相关的知识点时,又吱吱唔唔了。 最有意思的是,居然主动说了离职原因,他说公司项目没用 Spring Boot,他觉得 Spring Boot 又是最主流的技术,果断离职出来找个用这个技术的公司学习一下。 这离职原因说出来让我有点想笑,站在面试官的角度,他表现的非常热爱技术和强烈的学习欲望是好事,但确实是好事吗?就因为公司没用 Sprin...
年轻人的第一个 Spring Boot 应用,太爽了!
Spring Boot 大家都知道是啥吧? 还有不知道的来看这篇扫下盲:告诉你,Spring Boot 真是个牛逼货!。 顺便再往下看,栈长给你带来年轻人的第一个 Spring Boot 应用,撸码史无前例的轻松,那就一个字:爽! 第一步打开这个网站,快速生成一个 Spring Boot 项目。 https://start.spring.io/ 废话不说,看下图,几秒搞定! 第二步解压生成的 demo 项目,导入到 IDE 中。 来看下 pom.xml 文件内容: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:...
年轻人的第一个自定义 Spring Boot Starter!
陆陆续续,零零散散,栈长已经写了几十篇 Spring Boot 系列文章了,其中有介绍到 Spring Boot Starters 启动器,使用的、介绍的都是第三方的 Starters ,那如何开发一个自己的 Spring Boot Starter 呢? 下面带大家开发一个年轻人的第一个 Spring Boot Starter! 不知道 Starters 为何物的请进这个传送门===>Spring Boot Starters 启动器,看完有了学习基础,我们再继续下面的自定义 Starter 实战! 一、自定义 Starter 必备组件一个完整的 Spring Boot Starter 需要包含以下组件: 包含自动配置代码的自动配置模块;参考:Spring Boot自动配置原理、实战。 Starter模块提供对自动模块的依赖关系,和相关依赖库,以及任何需要用到的依赖。简而言之,就是,添加一个 Starter 就应该提供使用该 Starter 所需的一切; 二、创建一个自定义Starter怎么创建 Spring Boot 项目就不说了,之前也分...
Zookeeper 集群安装配置,超详细!
今天,栈长分享下 Zookeeper 的集群安装及配置。 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11。 安装1、上传安装包 把下载的最新的包(如:zookeeper-3.4.11.tar.gz)上传到服务器,上传的方式也不多说了。 2、解压 $ tar zxvf zookeeper-3.4.11.tar.gz 3、移动到/usr/local目录下 $ mv zookeeper-3.4.11 /usr/local/zookeeper 集群配置Zookeeper集群原则上需要2n+1个实例才能保证集群有效性,所以集群规模至少是3台。 下面演示如何创建3台的Zookeeper集群,N台也是如此。 1、创建数据文件存储目录 $ cd /usr/local/zookeeper $ mkdir data 2、添加主配置文件 $ cd conf $ cp zoo_sample.cfg zoo.cfg 3、修改...
