程序猿最终之路-架构师:Spring boot实战战役解析

什么是架构师

所谓架构师,通俗地说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。

程序猿最终之路-架构师:Spring boot实战战役解析_第1张图片

定义

软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计与实施、负责软件架构和关键技术决策的人员。软件架构师应能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。

要求

(1)对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等;

(2)具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;

(3)拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;

(4)以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美);

(5)精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如 J2EE 架构等);

(6)具备系统设计员的所有技能,但涉及面更广、抽象级别更高;活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构部署模型、构架概念验证原型、接口、事件、信号与协议等。架、分析模型、设计模型、实施模型。

Spring Boot

旨在简化Spring的开发,就这点而论,Spring Boot涉及了Spring的方方面面。用一本书讲清楚Spring Boot的所有用法是不可能的,因为这必须涵盖Spring本身所支持的各种技术。所以《Spring Boot实战》把Spring Boot大致分为4个主题:自动配置、起步依赖、命令行界面和Actuator。书中还会讲到一些必要的Spring特性,但重点还是在Spring Boot上。

程序猿最终之路-架构师:Spring boot实战战役解析_第2张图片 

 

第一章

1.1 Spring 风云再起

Spring诞生时是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置, 而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身

这里没有配置,没有web.xml,没有构建说明,甚至没有应用服务器,但这就是整个应用程序了。Spring Boot会搞定执行应用程序所需的各种后勤工作,你只要搞定应用程序的代码就好。假设你已经装好了Spring Boot的命令行界面(Command Line Interface,CLI),可以像下面这

样在命令行里运行HelloController:

$ spring run HelloController.groovy

想必你已经注意到了,这里甚至没有编译代码,Spring Boot CLI可以运行未经编译的代码。

之所以选择用Groovy来写这个控制器示例,是因为Groovy语言的简洁与Spring Boot的简洁有异曲同工之妙。但Spring Boot并不强制要求使用Groovy。实际上,本书中的很多代码都是用Java 写的,但在恰当的时候,偶尔也会出现一些Groovy代码。

不要客气,直接跳到1.2.1节吧,看看如何安装Spring Boot CLI,这样你就能试着编写这个小小的Web应用程序了。现在,你将看到Spring Boot的关键部分,看到它是如何改变Spring应用程序的开发方式的。

程序猿最终之路-架构师:Spring boot实战战役解析_第3张图片

 

第二章

在本书中,我们会构建一个简单的阅读列表应用程序。在这个程序里,用户可以输入想读的图书信息,查看列表,删除已经读过的书。我们将使用Spring Boot来辅助快速开发,各种繁文缛节越少越好。

开始前,我们需要先初始化一个项目。在第1章里,我们看到了好几种从Spring Initializr开始Spring Boot开发的方法。因为选择哪种方法都行,所以要选个最合适的,着手用Spring Boot开发就好了。

从技术角度来看,我们要用Spring MVC来处理Web请求,用Thymeleaf来定义Web视图,用 Spring Data JPA来把阅读列表持久化到数据库里,姑且先用嵌入式的H2数据库。虽然也可以用 Groovy,但是我们还是先用Java来开发这个应用程序吧。此外,我们使用Gradle作为构建工具。无论是用Web界面、Spring Tool Suite还是IntelliJ IDEA,只要用了Initializr,你就要确保勾选

了Web、Thymeleaf和JPA这几个复选框。还要记得勾上H2复选框,这样才能在开发应用程序时使用这个内嵌式数据库。

至于项目员信息,就随便你写了。以阅读列表为例,我创建项目时使用了图2-1中的信息。

程序猿最终之路-架构师:Spring boot实战战役解析_第4张图片

 

如果你创建项目时用的是Spring Tool Suite或者IntelliJ IDEA,那么把图2-1的内容适配成IDE

需要的东西就好了。

另一方面,如果用Spring Boot CLI来初始化应用程序,可以在命令行里键入以下内容:

$ spring init -dweb,data-jpa,h2,thymeleaf --build gradle readinglist

请记住,CLI的init命令是不能指定项目根包名和项目名的。包名默认是demo,项目名默认是Demo 。在项目创建完毕之后, 你可以打开项目,把报名demo 改为readinglist ,把DemoApplication.java改名为
ReadingListApplication.java。

项目创建完毕后,你应该能看到一个类似图2-2的项目结构。

程序猿最终之路-架构师:Spring boot实战战役解析_第5张图片

 

第三章

3.1 覆盖 Spring Boot 自动配置

一般来说,如果不用配置就能得到和显式配置一样的结果,那么不写配置是最直接的选择。既然如此,那干嘛还要多做额外的工作呢?如果不用编写和维护额外的配置代码也行,那何必还要它们呢?

大多数情况下,自动配置的Bean刚好能满足你的需要,不需要去覆盖它们。但某些情况下,

Spring Boot在自动配置时还不能很好地进行推断。

这里有个不错的例子:当你在应用程序里添加安全特性时,自动配置做得还不够好。安全配置并不是放之四海而皆准的,围绕应用程序安全有很多决策要做,Spring Boot不能替你做决定。虽然Spring Boot为安全提供了一些基本的自动配置,但是你还是需要自己覆盖一些配置以满足特定的安全要求。

想知道如何用显式的配置来覆盖自动配置,我们先从为阅读列表应用程序添加Spring Security入手。在了解自动配置提供了什么之后,我们再来覆盖最基础的安全配置,以满足特定的场景需求。

程序猿最终之路-架构师:Spring boot实战战役解析_第6张图片

 

第四章

4.1集成测试自动配置

Spring Framework的核心工作是将所有组件编织在一起,构成一个应用程序。整个过程就是读取配置说明(可以是XML、基于Java的配置、基于Groovy的配置或其他类型的配置),在应用程序上下文里初始化Bean,将Bean注入依赖它们的其他Bean中。

对Spring应用程序进行集成测试时,让Spring遵照生产环境来组装测试目标Bean是非常重要的一点。当然,你也可以手动初始化组件,并将它们注入其他组件,但对那些大型应用程序来说, 这是项费时费力的工作。而且,Spring提供了额外的辅助功能,比如组件扫描、自动织入和声明性切面(缓存、事务和安全,等等)。你要把这些活都干了,基本也就是把Spring再造了一次,最好还是让Spring替你把重活都做了吧,哪怕是在集成测试里。

程序猿最终之路-架构师:Spring boot实战战役解析_第7张图片

 

第五章

5.1 开发 Spring Boot CLI 应用程序

大部分针对JVM平台的项目都用Java语言开发,引入了诸如Maven或Gradle这样的构建系统, 以生成可部署的产物。实际上,我们在第2章开发的阅读列表应用程序就遵循这套模型。

最近版本的Java语言有不少改进。然而,即便如此,Java还是有一些严格的规则为代码增加了不少噪声。行尾分号、类和方法的修饰符(比如public和private)、getter和setter方法,还有import语句在Java中都有自己的作用,但它们同代码的本质无关,因而造成了干扰。从开发者的角度来看,代码噪声是阻力——编写代码时是阻力,试图阅读代码时更是阻力。如果能消除一部分代码噪声,代码的开发和阅读可以更加方便。

同理,Maven和Gradle这样的构建系统在项目中也有自己的作用,但你还得为此开发和维护构建说明。如果能直接构建,项目也会更加简单。

程序猿最终之路-架构师:Spring boot实战战役解析_第8张图片

第六章

我小时候,有一个系列电视广告,当中有两个人,一个在吃巧克力条,另一个在吃罐子里的花生酱。经由一些富有喜剧效果的小事故,两个人撞到了一起。最后,花生酱和巧克力相结合。

一个人说:“你把巧克力弄到我的花生酱里了!”另一个人回答:“是你把花生酱弄到我的巧克力上了!”

在一开始的尴尬后,两个人都认同花生酱和巧克力结合在一起是件好事。接着,旁白会建议观众试试Reese牌的的花生酱杯(Peanut Butter Cup)。

在Spring Boot刚发布时,经常有人问我在Spring Boot和Grails之间该如何选择。两者都构建于Spring Framework之上,都旨在简化应用程序的开发。实际上,它们就像花生酱和巧克力一样。两个都很好,具体如何选择取决于个人爱好。

就像之前巧克力和花生酱的争论一样,事实上并不必从中选出一个来。Spring Boot和Grails

两个都很好,完全可以结合到一起。

在本章中,我们会看到Grails和Spring Boot之间的联系。我们会先看到Spring Boot中Grails对象关系映射(Grails Object Relational Mapping,GORM)和Groovy服务器页面(Groovy Server Page, GSP)这样的Grails特性,还会看到Grails 3是如何基于Spring Boot重写的。

程序猿最终之路-架构师:Spring boot实战战役解析_第9张图片 

 

第七章

你有没有猜过包好的礼物盒里装的是什么东西?你会摇一摇,掂一掂,量一量,你甚至会执着于里面到底有什么。但打开盒子那一刻前,你没办法确认里面是什么。

运行中的应用程序就像礼物盒。你可以刺探它,作出合理的推测,猜测它的运行情况。但如何了解真实的情况呢?有没有一种办法能让你深入应用程序内部一窥究竟,了解它的行为,检查它的健康状况,甚至触发一些操作来影响应用程序呢?

在本章中,我们将了解Spring Boot的Actuator。它提供了很多生产级的特性,比如监控和度量Spring Boot应用程序。Actuator的这些特性可以通过众多REST端点、远程shell和JMX获得。我们先来看看Actuator的REST端点,这种最为人所熟知的使用方式提供了最完整的功能。

程序猿最终之路-架构师:Spring boot实战战役解析_第10张图片

 

第八章

想一想你喜欢的动作电影。现在假设你要去电影院看这部电影,享受视听震撼。片中有高速追逐、爆炸和激战。好人还没战胜坏人,一切偏偏戛然而止。还没等影片里的冲突解决,电影院的灯亮了,大家都被领出门外。

虽然前面的铺垫很精彩,但电影的高潮才是最重要的。没有了它,就是为了动作而动作了。现在,想象你正在开发应用程序,为解决某个业务问题投入了很多精力和创造力,但最终没

能部署应用程序,没能让别人使用这个程序并乐在其中。当然,我们应用程序大多没有汽车追逐和爆炸(至少我希望是这样的),但一路上我们也会争分夺秒。当然,并非每行代码都为生产环境而写,但什么都不部署也挺让人失望的。

目前为止,我们的焦点都集中在使用Spring Boot的特性帮助大家开发应用程序。我们遇到了不少惊喜。但如果不越过终点线,应用程序没有部署,这一切都是徒劳。

在本章,我们会在使用Spring Boot开发应用程序的基础上更进一步,讨论如何部署那些应用程序。虽然这对部署过基于Java的应用程序的人来说并无特别之处,但Spring Boot和相关的Spring 项目中有些独特的功能,基于这些功能我们可以让Spring Boot应用程序的部署变得与众不同。

实际上,大部分Java Web应用程序都以WAR文件的形式部署到应用服务器上。Spring Boot 提供的部署方式则有所不同,后者在部署上提供了不少选择。在了解如何部署Spring Boot应用程序之前,让我们看看这些可选方式,找出能满足我们需求的那些选项。

程序猿最终之路-架构师:Spring boot实战战役解析_第11张图片

 

本次的内容大致的就介绍到这里拉,由于内容太多,只能简单介绍到这里,如有需要以上内容的完整版,评论区暗号333,大家可以关注私信我获取哦

成为架构师,需要经验和眼界

老码农分为两种:游击队和板凳王

坐穿板凳有利于积累经验,而不利于开拓眼界

游遍四海有利于开拓眼界,而不利于积累经验

码农的生活是高压的,唯有热情可以驱使你一边吃着苹果,一边又去摘梨

然而,又有多少热情没有随时间而冷却呢

所以说码农要成为架构师的道路还是很漫长的,希望大家都可以努力成为一名架构师

程序猿最终之路-架构师:Spring boot实战战役解析_第12张图片

 

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,,咱们下期见。

收藏 等于白嫖,点赞才是真情。

你可能感兴趣的:(后端,redis,spring,boot,spring,java)