Spring Boot2精髓(从构建小系统到架构分布式大系统)
yuyutoo 2024-10-23 16:41 1 浏览 0 评论
内容简介:
Spring Boot是目前Spring技术体系中炙手可热的框架之一,既可用于构建业务复杂的企业应用系统,也可以开发高性能和高吞吐量的互联网应用。Spring Boot 框架降低了Spring 技术体系的使用门槛,简化了Spring 应用的搭建和开发过程,提供了流行的第三方开源技术的自动集成。
本书系统介绍了Spring Boot2的主要技术,侧重于两个方面,一方面是极速开发一个Web应用系统,详细介绍Spring Boot框架、Spring MVC.视图技术、数据库访间技术,并且介绍多环境部署、自动装配、单元测试等高级特性:另一方面, 当系统模块增加,性能和吞吐量要求增加时,如何平滑地用Spring Boot实现分布式架构,也会在本书后半部分介绍,包括使用Spring实现RESTful架构,在Spring Boot框架下使用Redis、MongoDB. ZooKeeper. Elastisearch 等流行技术,使用Spring Session 实现系统水平扩展,使用Spring Cache提高系统性能。
阅读本书的人,可以是Java新手,从未使用过任何Spring技术的工程师。也可以是用过Spring, 但想进一步了解Spring Boot的开发者。如果你已经使用过Spring Boot,那么本书也非常适合你全面深入了解Spring Boot。
第一章:Java EE简介
1.1Java EE
从2001年开始接触Java EE技术,当时面对Java EE那么多组件和规范,比如,EJB技术,确实有点发懵了。编写一个企业应用居然用到了那么多技术,曾经的电信项目,启动就需要10分钟,每次发布都需要一个小时。 作为新手的我是不能理解的,这也是当时大多数程序员的心态。然而JavaEE针对复杂企业系统所指定的规范和实现,能满足复杂的企业应用需求,这也是为什么Java EE很快就流行起来,并在电信、银行等领域广泛使用的原因。2003年Spring横空出世,告诉所有人,编写企业应用、Web应用,并非需要全部的JavaEE技术,也不需要像EJB那样复杂的使用方式和部署方式。使用Spring, 开发并部署网站和企业应用变得很便捷。同时Spring建立在Java EE基础上,同样可以使用Java EE的功能。基于技术的创新和兼容传统Java EE技术,使得Spring框架很快流行起来,普遍使用在传统企业应用和互联网应用中。
1.1.1Java EE架构
要应用Spring Boot技术,并不一定需要先从Spring 技术开始,更不需要了解JavaEE。然而,稍微了解JavaEE和Spring技术,对SpringBoot会有更深的理解。
1.1.2 Java EE 的缺点
Java EE 的出现,结束了 Web 开发的技术无序状态,让程序员、架构师用同 种思维去思考如何架构和开发应用(指企业应用和 Web 网站,以下同),然而 Java EE 也有其局限性:
l.2 Spring
Spring 是为了解决应用复杂性而产生的框架,它吸取了 Java EE 容器管理的优点,提供了IoC 容器来管理 Bean 井通过 OP 方式来增强 Bean 的功能,不同的是它并没像 Java EE那样详细规定容器提供的是何种服务和容器里运行的具体组件类型 Spring 只提供了两种机制,控制反转 Cl oC )和面向切面 CAOP ),来提供任意的服务和增强 Bean 的任意特性,使得 Spring本身容易掌握,又可以通过 Bean 管理来无限扩展功能。
1.2.1 Spring loC 容器和 AOP
1 .2.2 Spring 的缺点
随着Spring的功能越来越强,在使用Spring的时候,门槛也变得高了起来,诸如搭建-个基于Spring的Web程序却并不简单,需要进行各种配置。Spring中-些过时的技术也经常无意地被引用到最新项目中。新手面对同一种需求会面临选择困难,比如处理事务是用XML配置好,还是使用注@Trasactional好?这是因为Spring通过多年的发展,本身变得臃肿,过时的使用方式没有被淘汰固然很好,但会给初学者带来使用上的混乱。同时Spring也集成了越来越多的第三方技术,如何方便地使用这些第三方技术,各版本之间不会产生冲突也需要一定的实践。尽管Spring很强大,但它也在犯Java EE的错误,例如有如下缺点:
1.3 Spring Boot
Spring Boot简化了Spring 应用开发,不需要配置就能运行Spring应用,Spring Boot管理Spring容器、第三方插件,并提供很多默认系统级的服务。大部分Spring 应用,无论是简单的Web系统,还是构建复杂系统,都只需要少量配置和代码就能完成。这有点像每个公司基于Spring框架做的内部开发框架,不同的是,Spring Boot更完善、更强大。
1.4 Hello , Spring Boot
本节完成 个简单的 Web 应用,输出“Hello, Spring oot ”。例子基于己经安装好的环境,只需要 IDK8 Ec ipse ,还有 Maven3 就可以了,如果你还没有安装或者熟悉这些工具,仍然可以先阅读本章,也可以先参考第 章的环境搭建后,再按照本章的代码边写边学习。
1.4.1 创建一个 Maven 工程
1.4.2 增加 Web 支持
本章的例子是一个简单的Web 应用,不用像以往的各种框架需要下载安装一个Web服务器,然后创建Web工程,配置web.xml、applicationContext.xml。 使用Spring Boot,仅仅需要在pom文件中声明使用Spring Boot,并添加→个spring- bostarter-web的依赖即可。Spring Boot会使用内置的Tomcat作为WebServer,并且自动配置好Spring应用所需要的一切配置文件。
1.4.1 创建一个 Maven 工程
1.4.2 增加 Web 支持
本章的例子是一个简单的Web应用,不用像以往的各种框架需要下载安装一个Web服务器,然后创建Web工程,配置web.xml、applicationContext.xml. 使用Spring Boot,仅仅需要在pom文件中声明使用Spring Boot,并添加→个spring-boo-starter-web的依赖即可。Spring Boot会使用内置的Tomcat作为WebServer,并且自动配置好Spring应用所需要的--切配置文件。
1.4.3Hello Spring Boot示例
1.4.4 使用热部署
1.4.5 添加 REST 支持
如果你的系统并非- -个单- -的Web应用,而是由多个系统构成的,比如独立出一个积分系统,为其他系统(如支付系统)提供管理用户积分、显示用户积分、增加用户积分等操作。系统之间的调用方式有很多, RESTFul也是一种很好的方式。Spring Boot能很方便地支持RESTFul应用。
第二章:Spring Boot 基础
本章首先介绍如何安装Spring Boot 应用的开发环境,如果你是新手,需要安装Java8和Maven3。Spring Boot应用中Maven是必备工具,因此这一章 也会详细介绍Maven工具的安装、配置和使用。最后会再次介绍Spring的历史、IoC 容器和Spring常用的注解。如果你已经熟悉Java和Maven,可以直接跳过这一章。(这一章小编就不详细介绍啦)
第三章:MVC 框架
在Spring框架和Spring Boot中,最常用的技术就是MVC框架。试图讲清楚Spring MVC的内容,有可能需要一本书来讲述。本章将介绍MVC中最实用的部分,一些不常用的技术,.或者过时的技术将不做介绍。
3.1 集成 MVC 框架
3.1.1 引入依赖
3.1.2 Web 应用目录结构
3.1.3 Java 包名结构
3.2 使用 Controller
SpringMVC框架不像传统的MVC框架那样必须继承某个基础类才能处理用户的HTTP请求,Spring MVC只需要在类上声明@Controller,标注这是一个Controller即可。对于用户请求,使用@RequestMapping映射HTTP请求到特定的方法处理类。
3.3 URL 映射到方法
从本节开始,将学习HTTP请求到Spring Controller的方法的映射,Spring MVC提供了各种各样的映射方式,尽管会让SpringMVC框架的学习成本提高,但SpringMVC框架能让Web应用的代码更容易阅读和维护。
建议学习本章知识后,可以按照前面提到的“故意制造一些错误”的学习方法,看看SpringMVC有什么错误提示,这样有助于加深对SpringMVC的理解。
3.3.1 @RequestMapping
3.3.2 URL 路径匹配
属性 alue 于匹配一个 URL 映射, value 支持简单的表达式来匹配:
3.3.3 HTTP method 匹配
3.3.4 consumes produces
3.3.5 params header 匹配
3.4 方法参数
3.4.1 PathVariable
3.4.2Model&ModelAndView
任何MVC框架都有-个类似Map结构的Model,可以向Model添加视图需要的变量,SpringMVC中的Model就是完成此功能的。Model 对象主要有如下方法:
3.4.3 JavaBean 接受 HTTP 参数
3.4.4 @ RequsetBody 接受 JSON
3.4.5 MultipartFile
3.4.6 @ModelAttribute
3.4.7 @lnitBinder
3.5 验证框架
Spring Boot 支持 JSR-303 Bean 验证框架 默认实现用的是 Hibernate validator 。在 SpringMVC 中,只需要使用@Valid 注解标注在方法参数上, Spring Boot 即可对参数对象进行校验校验结果放在 BindingResult 对象中。
3.5.1 JSR-303
JSR-303是Java标准的验证框架,已有的实现有Hibernate validator。 JSR-303 定义了一系列注解用来验证Bean的属性,常用的有如下几种。
3.6 WebMvcConfigurer
WebMvcConfigurer是用来全局定制化SpringBoot的MVC特性。开发者通过实现WebMvcConfigurer接口来配置应用的MVC全局特性。
3.6.1 拦截器
3.6.2 跨域访问
3.6.3 格式化
3.6.4 注册 Controller
3.7 视图技术
3.7.1 使用 Freemarker
安装 Freemaker ,需要在 porn 中添加如下依赖:
<dependency> <groupid>org . springframework .boot</groupid> <artifactid>spring-boot-starter-freemarker</artifactid> </dependency>
3.7.2 使用 BeetI
Beet! 是笔者开发的一个模板引擎,它的语法和使用习惯参考了 JS ,因此学习起来较快,同
时在功能和性能上也做了很大的提升。集成 Beet!需要在 Maven 中添加如下依赖:
3.7.3 使用 Jackson
在MVC框架中, Spring Boot内置了Jackson 来完成JSON的序列化和反序列化。在Controller中,方法注解为@ResponseBody,自动将方法返回的对象序列化成JSON。
3.7.4 Redirect Forward
通常而言,Controller 都会返回一个视图名称,比如以btl结尾的视图会交给Beetl模板引擎渲染。有些情况下,Controller 会返回客户端一一个HTTP Redirect 重定向请求,希望客户端按照指定地址重新发起- -次请求,比如客户登录成功后,重定向到后台系统首页。再比如客户端通过POST提交了一个名单,可以返回一个重定向请求到此订单明细的请求地址。这样做的好处是,如果用户再次刷新页面,则访问的是订单详情地址,而不会再次提交订单。
3.8 通用错误处理
在Spring Boot中,Contoller 中抛出的异常默认交给了error来处理,应用程序可以将error映射到一个特定的Contollr中处理来代替Spring Boot的默认实现,应用可以继承AbstractErorController来统一处理系统的各种异常。
3. 9 @Service 和@Transactional
到目前为止,Spring Boot的Contoller介绍完毕,在Spring Boot中,Controller调用业务逻辑处理交给了被@Service注解的类,这也是个普通的JavaBean, Controller 中可以自动注入这种Bean,并调用其方法完成主要的业务逻辑。正如Contoller注解经常和@RequestMapping搭配使用一样,@Service 和@Transactional配合使用。
3.9.1声明一 个Service类
在Spring Boot应用中,业务逻辑集中在Service 中处理,并自动注入到Controller中处理。实现-一个Service类,需要定义-一个业务的接口,比如根据id查询用户及更新用户状态:
3.9.2 事务管理
Spring 单地实现了事务管理,通过 Service 类中使用@Transan 来让 巳凹ice 参与事务管理。为了使用事务 需要在 porn 添加 以下依赖:
以上内容太多,小编就不一一详细介绍了,希望大家能够仔细品读这篇优质作品,得之,幸之,会让自己提升一个台阶的。如果大家需要这篇【Spring Boot2精髓(从构建小系统到架构分布式大系统)】文档的话,就可以转发此文关注小编,私信小编“学习”得到获取方式吧!
相关推荐