一、Spring Boot 系列诞生原因

上学那会主要学的是 Java 和 .Net 两种语言,当时对于语言分类这事儿没什么概念,恰好在2009年毕业那会阴差阳错的先找到了 .Net 的工作,此后就开始了漫长的 .Net 编程之旅,说实话最初的“编程思想”的形成和确立都是在头几年做 .Net 的时候慢慢培养起来的。

后来在2015年之后就开启了“百花齐放”的模式,那时候 Nodejs、Vue、Golang 在程序界开始暂露头脚并逐渐流行,而作为类游戏公司出身的我和我的老领导,在新系统开发中大量使用了大量的新技术元素,那时候 Nodejs、Golang 作为我们首选的主要的开发语言,进而取代了之前一直使用的 .Net,这个经历对我的影响非常大,我会开始尝试更多的开发语言和框架,甚至到后来的手机开发也开始越做越顺手,当然手机的框架我们也用了很多,踩了很多坑,从最开始的 DCloud 到 Xamarin 再到 React Native,我们是一边实践一边用于生产坏境,所幸由于领导的体谅和我们的努力,让我们能很顺利的走过那段“艰难”岁月,一直到后来的技术逐渐稳定。

说了辣么多,和我们本节的主题“为什么会诞生 Spring Boot 系列文章”有毛关系?

客观莫慌,待老衲如实道来。

是这样子,虽然我们这一路似乎走的还算平稳,那为什么导致我后来用 Java 和 Spring Boot 的诞生呢?原因其实也挺简单,新技术的使用会带来几个问题?

  1. 新技术的使用增加了人员招聘的成本,通常招不到更多的人(在业务高速发展的阶段会影响项目的进度);
  2. 新技术使用成本很高,通常有更多的坑和更少的解决方案;
  3. 新技术可控性更差,有些问题可能是致命性,存在不能修复的风险;

所以经过这些事之后,让我明白一件事,那就是“顺势而为”,Java 作为国内最流行的语言,处理 BAT 还有很多名不见经传的大小中公司都在使用,而且有很成熟的解决方案和人员优势,我们干嘛要做吃力不讨好的事情。当然这也不是教育我们不要尝试新的事物,而是要循序渐进深入思考的使用和应用新技术,要明白所有的事情不是一蹴而就的,凡事都有一个过程,新技术是一定要学的,但用于生产环境一定要结合自身情况去深入思考。当然我更鼓励大家去学习新技术,但不要迷恋新技术,凡事都与利弊的,要做一件事情一定要深入思考。

有了这个想法之后,要很好的使用 Java,Spring Boot 当时逃不掉了,这是此系列诞生主要的原因,当然学 Spring Boot 可以自己闷头去学也是没有问题的,那 Spring Boot 系列诞生的原因还有那些呢?

  1. 会用一种技术和给别人讲明白一种技术是两码事情,想通过给别让讲明白这件事,驱动自己更深层次的理解和探寻这门技术;
  2. 照本宣科的学习一种技术,是一件简单事情,但要理解技术内在的联系,把你理解的技术转述给别人,引导别人从浅到深平滑的思维过度,以及按照某种规律,建立起更加牢固的记忆和更容易理解的文章,是一件非常不易的事儿,而要搞懂这种内在的联系(或者说是内在的规律),首先你要把这项技术理解的非常深刻才行,这是一种良性互动的驱动力,提供优质的文章=>积极的反馈=>改善,提供更优质的文章=>更积极的反馈;
  3. 大部分类似的文章比较旧,更新不够及时;
  4. 大部分类似的文章千篇一律,人云亦云,没有自己的独立思考与实践;
  5. 大部分类似的文章在功能使用上过于简单,想要深层次的挖掘一些更本质、更不一样的东西;

说了这么多那就开始一边实践,一边总结经验来汇报给各位看官老爷喽。

二、Spring Boot 系列目录

Spring Boot (一)快速入门

Spring Boot (二)集成Jsp与生产环境部署

Spring Boot (三)模板引擎FreeMarker集成

Spring Boot (四)模板引擎Thymeleaf集成

Spring Boot (五)Spring Data JPA 操作 MySQL 8

Spring Boot(六)集成 MyBatis 操作 MySQL 8

Spring Boot (七)MyBatis代码自动生成和辅助插件

Spring Boot (八)MyBatis + Docker + MongoDB 4.x

Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

Spring Boot(十)Logback和Log4j2集成与日志发展史

Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

Spring Boot(十二)单元测试JUnit

Spring Boot(十三)RabbitMQ安装与集成

Spring Boot(十四)RabbitMQ延迟队列

以上几乎包含了 Spring Boot 使用中,要涉及的方方面面了,后期根据工作中使用的情况,可能会做其他补充。

三、特别鸣谢

当然以上这些实践总结,不是凭空想出来的,一定参考了很多技术文章加上我自己的思考产生的心得体会,不保证一定是对的,但都是我的深思熟虑之后的所得所想,这里重点感谢几位老哥的资料:

纯洁的微笑:http://www.ityouknow.com/spring-boot.html

battcn:https://blog.battcn.com/categories/SpringBoot/

程序猿DD:http://blog.didispace.com/categories/Spring-Boot/

最后,推荐给大家一个非常不错的付费课程:《精通 Spring Boot 42 讲》


关注作者二维码,查看更多动态:

Spring Boot 系列总目录的更多相关文章

  1. spring boot系列01--快速构建spring boot项目

    最近的项目用spring boot 框架 借此学习了一下 这里做一下总结记录 非常便利的一个框架 它的优缺点我就不在这背书了 想了解的可以自行度娘谷歌 说一下要写什么吧 其实还真不是很清楚,只是想记录 ...

  2. 国内最全的Spring Boot系列之二

    历史文章 <国内最全的Spring Boot系列之一> 视频&交流平台 SpringBoot视频:http://t.cn/R3QepWG Spring Cloud视频:http:/ ...

  3. Spring Boot系列——如何集成Log4j2

    上篇<Spring Boot系列--日志配置>介绍了Spring Boot如何进行日志配置,日志系统用的是Spring Boot默认的LogBack. 事实上,除了使用默认的LogBack ...

  4. Spring Boot 系列教程19-后台验证-Hibernate Validation

    后台验证 开发项目过程中,后台在很多地方需要进行校验操作,比如:前台表单提交,调用系统接口,数据传输等.而现在多数项目都采用MVC分层式设计,每层都需要进行相应地校验. 针对这个问题, JCP 出台一 ...

  5. Spring Boot 系列教程18-itext导出pdf下载

    Java操作pdf框架 iText是一个能够快速产生PDF文件的java类库.iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的.它的类库尤其与java Servlet有很好 ...

  6. Spring Boot 系列教程17-Cache-缓存

    缓存 缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找.由于缓存的运行速度比内存快得多,故缓存的作用就是帮 ...

  7. Spring Boot 系列教程16-数据国际化

    internationalization(i18n) 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式. 它要求从产品中抽离所有地域语言,国家/地区和 ...

  8. Spring Boot 系列教程15-页面国际化

    internationalization(i18n) 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式. 它要求从产品中抽离所有地域语言,国家/地区和 ...

  9. Spring Boot 系列教程14-动态修改定时任务cron参数

    动态修改定时任务cron参数 不需要重启应用就可以动态的改变Cron表达式的值 不能使用@Scheduled(cron = "${jobs.cron}")实现 DynamicSch ...

随机推荐

  1. KMP模板实现

    看了出题知识点才发现自己连KMP都没有好好的理解,甚至一共就打过一次板子=-= 于是照着之前的课件学了一学...发现没怎么弄懂qwq 我太弱啦! 找了一篇自认为全网最好的介绍 觉得写得很棒 字符串匹配 ...

  2. python:os.path模块常用方法

    os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法.更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.ht ...

  3. 远程dump导出svn项目

    使用TortoiseSVN 安装目录下的svnrdump.exe 工具进行导出 1.cmd 到工具路径下 C:\Program Files\TortoiseSVN\bin svnrdump.exe d ...

  4. Nginx如何进行配置优化?

    在日常工作的时候,搭建配置Nginx的时候,我们都会做相应的优化,那一般需要做的配置优化有哪些呢?可能有些小伙伴一听到要进行优化,内心难免有些慌. 今天咱们聊聊Nginx进行常规配置优化,这里需要注意 ...

  5. 19南昌网络赛L

    校赛打杂没施展开. 题意:一开始给你一颗 (0,0)到(0,l)的树. 这棵树每一年会长出来三个幼芽(雾),长度均为l/4,方向分别是左转60,右转60,和不变. 年份<=14 考虑3^14直接 ...

  6. 设置mysql InnoDB存储引擎下取消自动提交事务

    mysql 存储引擎中最长用的有两种,MyISAM 存储引擎和InnoDB存储引擎. 1.MyISAM 存储引擎 不支持事务,不支持外键,优势是访问速度快: 2.InnoDB存储引擎 支持事务,一般项 ...

  7. Oracle 查询表空间使用情况

    select *   from (Select a.tablespace_name,                to_char(a.bytes / 1024 / 1024, '99,999.999 ...

  8. Mesos源码分析(10): MesosSchedulerDriver的启动及运行一个Task

      MesosSchedulerDriver的代码在src/sched/sched.cpp里面实现.     Driver->run()调用start()     首先检测Mesos-Maste ...

  9. Java线程池核心原理剖析

    在系统开发时,我们经常会遇到“池”的概念.使用池一种以空间换时间的做法,通常在内存中事先保存一系列整装待命的对象,以供后期供其他对象随时调用.常见的池有:数据库连接池,socket连接池,线程池等.今 ...

  10. [Swift]LeetCode135. 分发糖果 | Candy

    There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...