Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。springboot也成为了了当值无愧的主流技术。
本篇文章分享给大家springboot全教程,涵盖知识内容过长,都整理在PDF文档里面,文中只展示大概一部分给大家,需要源文档的朋友,可以点赞支持一下免费资料。
第一个Spring Boot项目
在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用Spring框
架的时候,是否觉得一堆反复黏贴的配置有一些厌烦?那么您就不妨来试试使用Spring Boot来让你更
易上手,更简单快捷地构建Spring应用!
Spring Boot让我们的Spring应用变化的更轻量化。比如:你可以仅仅依靠一个Java类来运行一个Spring引用。你也可以打包你的应变能力为jar并通过使用java -jar来运行你的Spring Web应用。
Spring Boot的主要优点:
为所有Spring开发者更快的入门
开箱即用,提供各种默认配置来简化项目配置
内嵌式容器简化Web项目
没有冗余代码生成和XML配置的要求
快速入门:
本章主要目标完成Spring Boot基础项目的构建,并且实现一个简单的Http请求处理,通过这个例子对
Spring Boot有一个初步的了解,并体验其结构简单、开发快速的特性。
IntelliJ中快速创建项目
本文我们将介绍嵌入的Intellij中的Spring Initializr工具,它同Web提供的创建功能一样,可以帮助我们
快速的构建出一个基础的Spring Boot/Cloud工程。
- 菜单栏中选择 File => New => Project.. ,我们可以看到如下图所示的创建功能窗口。其中 Initial Service Url 指向的地址就是Spring官方提供的Spring Initializr工具地址,所以这里创建的工程实际上也是基于它的Web工具来实现的。
点击 Next ,等待片刻后,我们可以看到如下图所示的工程信息窗口,在这⾥我们可以编辑我们想要创建的工程信息。其中, Type 可以改变我们要构建的工程类型,比如:Maven、Gradle; Language 可以选择:Java、Groovy、Kotlin。
最佳实践的工程结构
Spring Boot框架本身并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们减少可能会遇见的坑,尤其是Spring包扫描机制的存在,如果您使用最佳实践的工程结构,可以免去不少特殊的配置工作。
典型示例
- root package结构: com.example.myproject
- 应用主类 Application.java 置于root package下,通常我们会在应用主类中做一些框架配置扫描等配置,我们放在root package下可以帮助程序减少手工配置来加载到我们希望被Spring加载的内容
- 实体(Entity)与数据访问层(Repository)置于 com.example.myproject.domain 包下
- 逻辑层(Service)置于 com.example.myproject.service 包下
- Web层(web)置于 com.example.myproject.web 包下
看看您现在的功能是否这样配置,如果不是,不妨尝试改变一下,看看是否可以去掉一些
@Configuration配置?
配置文件详解
相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷。我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在 pom.xml 中引入模块化的 Starter POMs ,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在 application.properties 中完成一些属性配置就能开启各模块的应用。
在之前的各篇文章中都有提及关于application.properties 的使用,主要用来配置数据库连接、日志相关配置等。除了这些配置内容之外,本文将具体介绍一些在 application.properties 配置中的其他特性和使用方法。
开发RESTful接口服务及单元测试
首先,回顾并详细说明一下在快速入门中使用的 @Controller 、 @RestController 、 @RequestMapping 注解。如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例,建议先看一下快速入门的内容。
- @Controller :修饰class,用来创建处理http请求的对象
- @RestController :Spring4之后加入的注解,原来在 @Controller 中返回json需要 @ResponseBody 来配合,如果直接用 @RestController 替代 @Controller 就不需要再配置 @ResponseBody ,默认返回json格式。
- @RequestMapping :配置url映射
下面我们尝试使用Spring MVC来实现一组对User对象操作的RESTful API,配合注释详细说明在
Spring MVC中如何映射HTTP请求、如何传参、如何编写单元测试。
RESTful API具体设计如下:
开发Web应用:模版引擎与静态资源
快速入门中我们完成了一个简单的RESTful Service,体验了快速开发的特性。在留言中也有朋友提到如何把处理结果渲染到页面上。那么本篇就在上篇基础上介绍一下如何进行Web应用的开发。
静态资源访问
在我们开发Web应用的时候,需要引用大量的js、css、图片等静态资源。
Web应用的统一异常处理
我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射: /error ,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面来展示异常内容。
选择一个之前实现过的Web应用(Chapter3-1-2)为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如:
此时,可以看到类似下面的报错页面,该页面就是Spring Boot提供的默认error映射页面。
使用Swagger2构建强大的RESTful API文档
由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。
这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Android开发或是Web开发等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法我们会创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:
由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。
随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。
为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为文体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API。具体效果如下图所示:
扩展XML请求和响应的支持
在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理。那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一个对象呢?
实现原理:消息转换器(Message Converter)
在扩展上述问题之前,我们先要知道Spring Boot中处理HTTP请求的实现是采⽤的Spring MVC。⽽在Spring MVC中有⼀个消息转换器这个概念,它主要负责处理各种不同格式的请求数据进⾏处理,并包转换成对象,以提供更好的编程体验。
在Spring MVC中定义了 HttpMessageConverter 接⼝,抽象了消息转换器对类型的判断、对读写的判断与操作,具体可⻅如下定义:
使用Spring Security进行安全控制
我们在编写Web应用时,经常需要对页面做一些安全控制,比如:对于没有访问权限的用户需要转到登录表单页面。要实现访问控制的方法多种多样,可以通过Aop、拦截器实现,也可以通过框架实现(如:Apache Shiro、Spring Security)。
本文将具体介绍在Spring Boot中如何使用Spring Security进行安全控制。
Spring Boot日志管理
Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。
由于springboot全教程的篇幅过长,后面讲目录列举给大家,大家在springboot这一块学习有缺陷的朋友,可以点赞支持一下获取。