SegmentFault 技术周刊 Vol.36 - 一篇入门 Spring Boot

1,344 阅读8分钟
原文链接: segmentfault.com

一篇带你入门 Spring Boot。

Spring Boot 初识

SpringBoot前世今生

本文主要讲述spring boot的由来,即其它诞生的背景,初衷,现状,及对未来的展望。

Spring Boot参考指南中文版--Chapter1.Spring Boot中文文档

本节提供一个Spring Boot参考文档的简明概述。你可以把它作为文档其余部分的导航。你可以从头到尾依次阅读该参考指南,或跳过你不感兴趣的章节。

Spring Boot 学习资料收集

Spring Boot QuickStart

Spring Boot QuickStart (1)

Spring Boot 简化了基于 Spring 的应用开发,你只需要 "run" 就能创建一个独立的,产品级别的 Spring 应用。

Spring 平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数 Spring Boot 应用只需要很少的Spring 配置。你可以使用 Spring Boot 创建 Java 应用,并使用 java -jar 启动它或采用传统的 war 部署方式。

  • 系统要求
  • 安装
  • 使用
  • 配置

Spring Boot QuickStart (2) - 基础

基于 Spring Boot 创建一个命令行应用,先来个最基本的体验,体验一下:

  • 配置管理(配置文件加载,多环境配置文件)
  • 日志
  • 单元测试

Spring Boot QuickStart (3) - Web & Restful

基于 Spring Boot 可以快速创建一个Web & Restful 应用。

  • 注解
  • 路由,方法
  • 请求参数
  • Cookie
  • Session
  • 模板引擎
  • 常用配置

Spring Boot QuickStart (4) - Database

到了操作数据库的环节,以 MySQL 为基准,体验一下数据库的相关操作,JPA、MyBatis 将是学习重点。体验的基线:

  • 单表。增、删、改、查(多条件组合查询、分页,排序等)
  • 多表关联。一对一,一对多,多对多

Spring Boot QuickStart (5) - Spring Data JPA

Java Persistence API,可以理解就是 Java 一个持久化标准或规范,Spring Data JPA 是对它的实现。并且提供多个 JPA 厂商适配,如 Hibernate、Apache 的 OpenJpa、Eclipse的EclipseLink等。

spring-boot-starter-data-jpa 默认使用的是 Hibernate 实现。

在 SpringBoot + Spring Data Jpa 中,不需要额外的配置什么,只需要编写实体类(Entity)与数据访问接口(Repository)就能开箱即用,Spring Data JPA 能基于接口中的方法规范命名自动的帮你生成实现(根据方法命名生成实现,是不是很牛逼?)

Spring Boot 入门实用教程

Spring Boot - 整合Jsp/FreeMarker

本文讲述了(json,jsp,freemarker)配置及整合方法,并针对web开发常用的注解的概念及功能进行了介绍,留下了一个疑问:为什么整合jsp后必须通过spring-boot:run方式启动?欢迎大家留言讨论。

Spring Boot - Servlet、过滤器、监听器、拦截器

本文讲解了注册Servlet/Filter/Listener的两种⽅方式(Servlet/Filter/Listener的概念大家自行查阅资料了解),及拦截器基本原理,并通过注解实现http拦截器,另外本文还有一个疑问:为什么Spring中实现的Http拦截器,无法对我们自定义的servlet请求进行拦截?欢迎大家留言讨论。

Spring Boot - 静态资源处理、启动加载、日志处理

  1. 静态资源处理

    1. 默认资源映射(/** - > /resources/static) ,重点是默认目录的优先级
    2. ⾃定义资源映射 (继承WebMvcConfigurerAdapter 并重写方法addResourceHandlers)
  2. 启动加载

    1. CommandLineRunner (实现接⼝,多个类加载的优先级)
  3. 日志处理

    1. logback(配置,控制台输出,文件输出)

Spring Boot - 整合JdbcTemplate、MyBatis

  • 本文讲解Spring Boot整合JdbcTemplate、整合mybatis,介绍并重点讲解了事务处理和配置。
  • 本文未提及关于分⻚查询和数据库连接池,我认为分页查询的重点是分页算法如何封装,并不是Spring Boot关注的重点,大家可以自己实现。
  • 另外现在常用的数据库连接池有c3p0/dbcp/tomcat-jdbc/HikariCP。
  • 顺便提一下,在Spring Boot中更改数据源,只需要在application.properties配置文件中增加spring.datasource.type配置即可。

Spring Boot - 部署Deploy

服务发布Tomcat:

  • 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
  • 修改pom文件中jar 为 war
  • 修改pom,排除tomcat插件
  • 打包部署到容器

Spring Boot 属性配置

SpringBoot配置属性之MVC

SpringBoot配置属性之Server

SpringBoot配置属性之DataSource

SpringBoot配置属性之NOSQL

SpringBoot配置属性之MQ

SpringBoot配置属性之Security

SpringBoot配置属性之Migration

SpringBoot配置属性之其他

SpringBoot配置文件日期属性转换实例

Spring Boot 进阶

Spring Boot - 自定义启动banner

实现的方式非常简单,我们只需要在Spring Boot工程的/src/main/resources目录下创建一个banner.txt文件,然后将ASCII字符画复制进去,就能替换默认的banner了。

spring boot validated的使用

spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。

比如,我们判断一个输入参数是否合法,可以用如下方式

spring-boot启动初探

Spring Boot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于Spring MVC的Web应用和REST服务开发。

使用spring boot开发web应用,决定项目是否可以直接启动的是spring-boot-starter-tomcat模块,我们可以直接引入spring-boot-starter-web。

Maven管理SpringBoot Profile

完成了上面的五步,即可使项目根据你的构建参数的不同,打包出不同环境下运行的包。

  1. 第1步去掉了SpringBoot内嵌的tomcat和tomcat-jdbc。使得我们可以决定在什么情况下使用何种容器运行我们的项目。
  2. 第2步配置了Maven构建Porfile,使得构建可根据我们的指令分发不同的包。
  3. 第3步配置了Maven资源过滤,不仅使得不同Profile下的资源文件互不可见,且替换了资源文件中以“@xx@”表示的属性值。
  4. 第4步使Spring的Profile由Maven决策,这样,我们就不用每次打包都修改Spring的Profile配置了。
  5. 第5步展示了如何执行不同Profile下的构建命令,并且使用了一个Shell脚本方便我们执行构建和跳过测试(多数时候我们在构建项目时先测试,并不需要在构建时测试,测试和构建的解耦使得我们更专注。但同时,如果你忘记了前置测试,也可能会引发未察觉的测试问题)。

SpringBoot四大神器之Actuator

Spring Boot有四大神器,分别是auto-configuration、starters、cli、actuator,本文主要讲actuator。actuator是spring boot提供的对应用系统的自省和监控的集成功能,可以对应用系统进行配置查看、相关功能统计等。

SpringBoot四大神器之Starter

SpringBoot的starter主要用来简化依赖用的。本文主要分两部分,一部分是列出一些starter的依赖,另一部分是教你自己写一个starter。

SpringBoot RESTful 应用中的异常处理小结

  • @ControllerAdvice 和 @ExceptionHandler 的区别
  • 处理 Controller 中的异常
  • 处理 404 错误

Spring Boot整合jsp后必须通过spring-boot:run方式启动?

简单总结一下,本文阐述的问题并不是日常开发中的主要问题(可能连主要问题都算不上,谁会用main去调试??),但是遇到了就花时间来研究一下,还是有所收获的。

  • 分析问题思路
  • Spring Boot 初始化的部分流程
  • 请求转发和重定向的区别

另外大家注意如果pom文件中<scope>去掉,再正常部署到tomcat容器中,会有jar冲突,建议大家试验过后,修改回去。

Spring-boot 启动时碰到的错误

通过springBoot构建一个简单的Restful webService

springboot定制404错误信息

SpringBoot-vue 基于Java的微服务全栈快速开发实践

Spring Boot 讲堂

Java 微服务实践 - Spring Boot 系列

Java 微服务实践 - Spring Boot 为系列讲座,二十节专题直播,时长高达50个小时,包括目前最流行技术,深入源码分析,授人以渔的方式,帮助初学者深入浅出地掌握,为高阶从业人员抛砖引玉。

系列讲座列表:

1. Java 微服务实践 - Spring Boot 系列(一)初体验

2. Java 微服务实践 - Spring Boot 系列(二) Web篇(上)

3. Java 微服务实践 - Spring Boot 系列(三)Web篇(中)

4. Java 微服务实践 - Spring Boot 系列(四)Web篇(下)

5. Java 微服务实践 - Spring Boot 系列(五)嵌入式Web容器

6. Java 微服务实践 - Spring Boot 系列(六)数据库 JDBC

7. Java 微服务实践 - Spring Boot 系列(七)MyBatis

8. Java 微服务实践 - Spring Boot 系列(八)JPA

9. Java 微服务实践 - Spring Boot 系列(九)NoSQL

10. Java 微服务实践 - Spring Boot 系列(十)缓存

11. Java 微服务实践 - Spring Boot 系列(十一)消息

12. Java 微服务实践 - Spring Boot 系列(十二)验证

13. Java 微服务实践 - Spring Boot 系列(十三)WebSocket

14. Java 微服务实践- Spring Boot 系列(十四)WebService

15. Java 微服务实践 - Spring Boot 系列(十五)安全

16. Java 微服务实践 - Spring Boot 系列(十六)日志

17. Java 微服务实践 - Spring Boot 系列(十七)监管

18. Java 微服务实践 - Spring Boot 系列(十八)配置

19. Java 微服务实践 - Spring Boot 系列(十九)测试

20. Java 微服务实践 - Spring Boot 系列(二十)自定义启动器

插播一则消息:11.11 - 11.13,SF 讲堂将开启优惠模式,大部分讲座均有不同限量的优惠,等你来抢! >>> 电梯直达活动页

本期完:)


欢迎关注 SegmentFault 微信服务号,获取最新讲堂及优惠信息。