SpringBoot探索02 – 启动过程之getSpringFactoriesInstances

最近计划整理下SpringBoot的启动过程以及API请求返回过程,以便支持后续的部分内容,也方便实现一周一文的计划。

先做SpringBoot启动流程分析。

初见

在SpringBoot启动代码的开头部分可以看到如下的内容:

…

springboot入门08 – 创建非web项目

概述

从开始使用SpringBoot到现在,一直都是在用SpringBoot开发web服务(API服务)。直到前段时间,需要帮其他组的同事写一个非web的简单服务时,才想到Springboot是不是也支持非web项目。

答案是肯定的:spring诞生之初就不是为web项目定制的,springBoot无非是在spring核心项目的基础上添加了一些方便开发者使用的组…

spring feign https配置

前两天需要通过springboot-feign来调用一个https的外部服务接口,因此要实现feign-client的SSL设置。

feign执行http请求通常会调用feign.Client接口的实现。这个接口的默认实现类Default提供了添加SSL配置的构造器:

…

springboot入门07 – 配置文件详解

概述

这一篇主要介绍下SpringBoot配置相关的内容。

通过配置文件,我们可以做到如下事情:

  • 修改springboot的默认配置项
  • 添加自定义配置项

SpringBoot使用全局的配置文件,主配置文件名是固定的:application.xxx

springboot的配置文件有多种格式可选,如:.properties,.xml,.yml。

我个人比较喜欢yaml的简洁,…

springboot入门04 – 使用SpEL表达式

概述

SpEL即Spring表达式语言(Spring Expression Language)。

从我通常的使用场景(API开发)来说,SpEL提供的大部分能力都可以划到奇技淫巧的范畴内。但是在一些场景下如缓存配置、ThymeLeaf取值等,SpEL还是大有可为的。

SpEL表达式的默认格式为:#{expression}。SpEL表达式以“#”开头,表达式主体包围在花…

springboot入门03 – 配置定时任务

概述

在Java环境下创建定时任务有多种方式:

  • 使用while循环配合Thread.sleep(),虽然稍嫌粗陋但也勉强可用
  • 使用Timer和TimerTask
  • 使用ScheduledExecutorService
  • 定时任务框架,如Quartz

在SpringBoot下执行定时任务无非也就这几种方式(主要还是后两种)。只不过SpringBoot做了许多底层的工作,我们只…

springboot入门02 – 自定义数据源及多数据源配置

spring-boot的自动化配置中是包含数据源连接配置的。但有些时候我们需要自定义数据源连接的配置,比如:

  • 使用的数据库连接池Spring暂时还不支持;
  • 需要配置连接多数据源;
  • 需要自定义一些数据库连接配置项。

这三种只是我曾经遇到的情形,当然还有些其他的情形。接下来就以曾经遇到的一个问题进行展开。

自定义数据源

我们在生产环境使用的数据库连接池是alibaba的dr…

springboot入门01 – 缓存的使用

前两天解决了一个Spring缓存的问题,因此就想到记录一下spring-boot缓存的使用。

开启缓存

SpringBoot开启缓存也容易,在启动类上添加@EnableCaching注解就可以了,不需要过多的配置。不过此时开启的缓存是比较简单的缓存,即基于ConcurrentHashMap实现的缓存。虽然简单,但对于负载不高的应用也足够用了。

SpringBoot…