Spring Boot 1.5.x 基础学习示例
一、为啥要学 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 => 阿里巴巴代码规约