一、为啥要学Spring Boot?

  

  今年从原来.Net Team“”转到了Java Team开始了微服务开发的工作,接触了Spring Boot这个新瓶装旧酒的技术,也初步了解了微服务架构。Spring Boot是Spring4之后整合的产物,它摒弃了原来Spring的一大堆的配置,采用了约定大于配置的方式,还是原来的配方,还是原来的佐料,让各路开发人员能够快速地使用Java开发微服务程序。其实,当我们了解了Spring Boot之后,会发现ASP.Net Core和Spring Boot很像,他们都是适合做微服务的技术。不过,对于Spring Boot的资料和相关的生态"看"起来要好一些(比如我现在公司已经没有多少.Net的新项目了),对于.Net程序员来讲,多掌握一门开发技术的需求越来越明显。这两年间,博客园的.Net程序员已有不少转到了或者已经掌握了基于Java的微服务开发技术(Spring Boot & Spring Cloud),这也说明了市场的需求变化。对于我来说,虽然我不排斥Java也在积极学习Java,但我还是更爱.Net Core一些(没办法,C#用的最爽),可能这就是初恋的味道把。但是,我也强烈建议.Net程序员多掌握一门技术,特别是在当今Spring Boot等框架已经为我们降低了很多学习门槛的基础上,更应该多多学习和吸收其他技术栈及生态圈好的东西来充实自己,进而获得进一步的自我提升。

  在学习途中,我把自己做的Demo记录下来上传到了GitHub,也是因为在学习途中浏览的博客示例代码很多由于版本过低及API变化无法正常运行,踩了一些坑之后把能够正常运行的Code与各位分享,让各位童鞋尽量少走弯路。

二、推荐学习资料

  (1)程序猿DD:《Spring Boot基础教程》=> 我们项目组的指定学习资料,言简意赅,点到即止

  (2)纯洁的微笑:《Spring Boot 1.x 与 2.0 基础教程》=> 可以作为程序猿DD的补充,且增加了很多2.0的内容

  (3)EdisonChou, 《Java微服务之Spring Boot on Docker》=> 将Spring Boot运行在Docker上,使用Docker Compose编排微服务

三、示例结构说明

  此示例项目主要基于程序猿DD的SpringBoot教程所做的学习实践,基于SprintBoot 1.5.15版本,每个项目均演示了部分内容。由于程序猿DD的文章示例版本太旧,部分Code无法正常运行,所以在学习途中(非SpringBoot2.0版本的学习)可以参考本示例Demo来学习。

  

  下面是各个子项目主要演示的内容:

  • msadv1 : Hello World & 配置文件的使用(多环境配置文件的使用) & MVC Controller & 热部署
  • msadv2 : 分层的CRUD RESTful API示例 & 单元测试(针对Controller和Service及Mock的使用)
  • msadv3 : 静态资源的导入 & Thymeleaf模板的使用 & Swagger API Doc & 统一异常处理
  • msadv4 : Spring Security基本使用 & JdbcTemplate访问数据库 & Spring-data-jpa访问数据库
  • msadv5 : 多数据源配置(基于JdbcTemplate 与 基于Spring-data-jpa)
  • msadv6 : Redis & MongoDB 集成与基本使用
  • msadv7 : 整合 MyBatis & MyBatis 注解配置的使用
  • msadv8 : Spring Boot中的事务管理 & 使用Flyway管理数据库版本
  • msadv9 : Spring Boot中的缓存注解 & 使用Ehcache作为缓存
  • msadv10 : 集成使用Redis作为缓存
  • msadv11 : 使用log4j记录日志 & 多环境(dev,test,prod)不同日志(INFO,DEBUG,ERROR)级别的控制
  • msadv12 : 使用log4j实现http请求日志存入MongoDB & 动态修改日志级别(1.5.x新特性)
  • msadv13 : RabbitMQ的基本集成和使用
  • msadv14 : 使用@Scheduled创建定时任务 & 使用@Async实现异步调用
  • msadv15 : 使用@Async实现异步调用:自定义线程池
  • msadv16 : 使用@Async实现异步调用:ThreadPoolTaskScheduler线程池的优雅关闭
  • msadv17 : 使用@Async实现异步调用:使用Future & 定义超时
  • msadv18 : 实现邮件发送:简单邮件、带附件的邮件、带资源的文件以及基于模板的邮件 & 使用spring boot actuator监控端点
  • msadv19 : 自定义启动Banner & 使用Spring StateMachine框架实现状态机 & 使用exclude排除不必要的自动化配置的加载

示例地址

  GitHub => https://github.com/EdisonChou/EDC.SpringBoot.Learning

推荐工具

  

  IDE => Intellij Idea Community 2018

  (PS: 如果是.Net程序猿想要学习SpringBoot,强烈建议更改快捷键与Visual Studio保持一致,这样能加快开发效率,如不了解如何修改,可以参考邹琼俊《从.Net到Java - Idea and Start Spring Boot》)

  

  Plugin => 阿里巴巴代码规约

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

Spring Boot 1.5.x 基础学习示例的更多相关文章

  1. (转)Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    http://www.ityouknow.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html 这篇文章介绍如何使用 Jpa 和 ...

  2. Spring Boot (十五): Spring Boot + Jpa + Thymeleaf 增删改查示例

    这篇文章介绍如何使用 Jpa 和 Thymeleaf 做一个增删改查的示例. 先和大家聊聊我为什么喜欢写这种脚手架的项目,在我学习一门新技术的时候,总是想快速的搭建起一个 Demo 来试试它的效果,越 ...

  3. Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例

    Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例 一.快速上手 1,配置文件 (1)pom包配置 pom包里面添加jpa和thymeleaf的相关包引用 ...

  4. Spring Boot 构建电商基础秒杀项目 (一) 项目搭建

    SpringBoot构建电商基础秒杀项目 学习笔记 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包, Spring Boot ...

  5. Spring Boot + Jpa + Thymeleaf 增删改查示例

    快速上手 配置文件 pom 包配置 pom 包里面添加 Jpa 和 Thymeleaf 的相关包引用 <dependency> <groupId>org.springframe ...

  6. 基于Spring Boot自建分布式基础应用

    目前刚入职了一家公司,要求替换当前系统(单体应用)以满足每日十万单量和一定系统用户负载以及保证开发质量和效率.由我来设计一套基础架构和建设基础开发测试运维环境,github地址. 出于本公司开发现状及 ...

  7. Spring Boot中整合Sharding-JDBC读写分离示例

    在我<Spring Cloud微服务-全栈技术与案例解析>书中,第18章节分库分表解决方案里有对Sharding-JDBC的使用进行详细的讲解. 之前是通过XML方式来配置数据源,读写分离 ...

  8. (五)Spring Boot官网文档学习

    文章目录 SpringApplication SpringApplication 事件 `ApplicationContext ` 类型 访问传递给 `SpringApplication` 的参数 A ...

  9. 《spring boot》8.2章学习时无法正常启动,报“ORA-00942: 表或视图不存在 ”

    在学习<spring boot>一书的过程中,由于原书作者难免有一些遗漏的的地方,或者系统.软件版本不一致.框架更新等各种因素,完全安装书中源码页不能实现项目的正常启动 在8.2章节,演示 ...

随机推荐

  1. java判断一个字符串是否是数字的三种方法

    参考https://blog.csdn.net/ld_flex/article/details/7699161 1 用JAVA自带的函数 public static boolean isNumeric ...

  2. cogs 2235 烤鸡翅

    贪心,每次如果够直接卖,不够找到之前的卖出的最多的一份,然后反悔 不过反悔的确是很好的策略! #include<cstdio> #include<cstring> #inclu ...

  3. 再谈async与await

    回顾C#5.0是如何进行异步编程的 static void Main(string[] args) { string url = "https://docs.microsoft.com/zh ...

  4. NavigationView头部设置监听事件

    直接写解决方法吧: 1.将XML里的静态引入删除: <android.support.design.widget.NavigationView android:id="@+id/nav ...

  5. html中 submit和button的区别?

    前者是向数据库提交表单 后者是单纯的按钮功能

  6. .NET 创建 classlib时,netcoreapp2.0与netstandard2.0的区别

    最近单位在开发一个新项目,在技术选型的时候,我们决定后台代码全部使用 dot net core来进行开发. 当项目引用公司之前的一个类库的时候,总是出现缺少XX组件的错误,所以我们检查了所有的类库,将 ...

  7. go语言调度器源代码情景分析之二:CPU寄存器

    本文是<go调度器源代码情景分析>系列 第一章 预备知识的第1小节. 寄存器是CPU内部的存储单元,用于存放从内存读取而来的数据(包括指令)和CPU运算的中间结果,之所以要使用寄存器来临时 ...

  8. Javascript的内存泄漏分析

    作为程序员(更高大尚的称谓:研软件研发)的我们,无论是用Javascript,还是.net, java语言,肯定都遇到过内存泄漏的问题.只不过他们都有GC机制来帮助程序员完成内存回收的事情,如果你是C ...

  9. Redis 缓存失效和回收机制续

    二.Redis Key失效机制 Redis的Key失效机制,主要借助借助EXPIRE命令: EXPIRE key 30 上面的命令即为key设置30秒的过期时间,超过这个时间,我们应该就访问不到这个值 ...

  10. asp.net core 系列之并发冲突

    本文介绍如何处理多个用户并发更新同一实体(同时)时出现的冲突 . 主要是两种:一种,检查属性并发冲突,使用 [ConcurrencyCheck] ;另一种,检测行的并发冲突,使用 rowversion ...