一.引言 SpringBoot的一大优势就是Starter,由于SpringBoot有很多开箱即用的Starter依赖,使得我们开发变得简单,我们不需要过多的关注框架的配置. 在日常开发中,我们也会自定义一些Starter,特别是现在微服务框架,我们一个项目分成了多个单体项目,而这些单体项目中会引用公司的一些组件,这个时候我们定义Starter,可以使这些单体项目快速搭起,我们只需要关注业务开发. 在此之前我们再深入的了解下SpringBoot启动原理.而后再将如何自定义starter. 二.…
SpringBoot1.x 启动配置原理 和 自定义starter 启动配置原理 本节源码 启动过程主要为: new SpringApplication(sources) 创建 SpringApplication 对象 springApplication.run() 运行Spring应用程序,创建并刷新一个新的应用环境 整个过程使用了事件监听机制 创建 SpringApplication 对象 SpringApplication.run(StartStarterApplication.class…
一.引言 有了自动配置,springboot使web开发变得简单,这个在springboot之旅中的第一篇中就有体现,实际的开发中当然不会这么简单,很多时候我们都需要自己去定制一些东西.web开发的东西比较多, 我们先掌握一些必要知识点,剩下的就是CRUD开发. 快速的创建一个springboot web项目在第一篇总结中有讲:https://www.cnblogs.com/yuanqinnan/p/10604761.html 二.静态资源的映射规则 现在大部分公司都是前后端分离的开发模式,一般…
启动流程 直接从 SpringBoot 程序入口的 run 方法看起: public static ConfigurableApplicationContext run(Object source, String... args) { return run(new Object[] { source }, args); } org.springframework.boot.SpringApplication#run(java.lang.Object, java.lang.String...) 执…
本博客通过debug方式简单跟一下Springboot application启动的源码,Springboot的启动源码是比较复杂的,本博客只是简单梳理一下源码,浅析其原理 为了方便跟源码,先找个Application类,打个断点,进行调试,如图所示: step into,run方法调用了SpringApplication的run方法 通过debug,Springboot启动过程,会先执行如下关键的构造函数 分析构造函数源码: public SpringApplication(ResourceL…
一.引言 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有MongoDB,Redis. 用spring开发时我们常用的ORM框架有JDBC.Mybatis,Hibernate,现在最常用的应该是Mybatis. 在Springboot中对于数据访问层,无论是SQL还是NOSQL,都默认采用整合Spring Data的方式进行统一处理,Springboot会帮我…
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot-mybatis/ 本文出自方志朋的博客 本文主要讲解如何在springboot下整合mybatis,并访问数据库.由于mybatis这个框架太过于流行,所以我就不讲解了. 引入依赖 在pom文件引入mybatis-spring-boot-starter的依赖: <dependency> <groupId>org.mybatis.sp…
一.前言 日志对于一个系统的重要性不言而喻,日志能帮我们快速定位线上问题,市场上存在非常多的日志框架,比较常见的有 JUL,JCL,Log4j,Log4j2,Logback.SLF4j.jboss-logging等. spring-boot-starter-logging采用了slf4j+logback的形式,SLF4j(Simple Logging Facade for Java)是日志门面(日志抽象接口),logback是日志实现.我们开发的时候,日志记录方法的调用,不应该来直接调用日志的实…
一.什么是事务 什么是事务(Transaction)?事务是数据库中的概念,是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit). 有个非常经典的转账问题:A向B转款1000元,A转出成功,扣除了A账户的1000元,但当系统准备向B账户增加1000元出现了故障,转入失败,但是A账户的金额已经扣除,这样的结果是A账户凭空少了1000元,很明显这样是不行的,正确的做法应该是当B账户增加成功后,A账户的扣款才能生效. 简单总结一句话就是:事务逻辑上的一组操作,组成这组操作的各个逻辑单元,…
一.引言 记得上大三时,要给微机房电脑安装系统,除了原生的操作系统外,还要另外安装一些必要的开发软件,如果每台电脑都重新去安装的话工作量就很大了,这个时候就使用了windows镜像系统,我们将要安装的软件装好打包成一个镜像,其他电脑只要装这个镜像就可以了,这样工作量就减少了很多.Docker跟这个镜像并不是一回事,但是思想是相同的. 我们在一台服务器中下载.安装.配置好Mysql,在另外一台服务器中又得重新下载.安装.配置,这样很麻烦也容易出现一些错误. 这个时候Docker就派上用场了,我们可…