所谓架构师,通俗地说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的。在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计与实施、负责软件架构和关键技术决策的人员。软件架构师应能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。
(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诞生时是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来辅助快速开发,各种繁文缛节越少越好。
开始前,我们需要先初始化一个项目。在第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 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的项目结构。
第三章
一般来说,如果不用配置就能得到和显式配置一样的结果,那么不写配置是最直接的选择。既然如此,那干嘛还要多做额外的工作呢?如果不用编写和维护额外的配置代码也行,那何必还要它们呢?
大多数情况下,自动配置的Bean刚好能满足你的需要,不需要去覆盖它们。但某些情况下,
Spring Boot在自动配置时还不能很好地进行推断。
这里有个不错的例子:当你在应用程序里添加安全特性时,自动配置做得还不够好。安全配置并不是放之四海而皆准的,围绕应用程序安全有很多决策要做,Spring Boot不能替你做决定。虽然Spring Boot为安全提供了一些基本的自动配置,但是你还是需要自己覆盖一些配置以满足特定的安全要求。
想知道如何用显式的配置来覆盖自动配置,我们先从为阅读列表应用程序添加Spring Security入手。在了解自动配置提供了什么之后,我们再来覆盖最基础的安全配置,以满足特定的场景需求。
第四章
Spring Framework的核心工作是将所有组件编织在一起,构成一个应用程序。整个过程就是读取配置说明(可以是XML、基于Java的配置、基于Groovy的配置或其他类型的配置),在应用程序上下文里初始化Bean,将Bean注入依赖它们的其他Bean中。
对Spring应用程序进行集成测试时,让Spring遵照生产环境来组装测试目标Bean是非常重要的一点。当然,你也可以手动初始化组件,并将它们注入其他组件,但对那些大型应用程序来说, 这是项费时费力的工作。而且,Spring提供了额外的辅助功能,比如组件扫描、自动织入和声明性切面(缓存、事务和安全,等等)。你要把这些活都干了,基本也就是把Spring再造了一次,最好还是让Spring替你把重活都做了吧,哪怕是在集成测试里。
第五章
大部分针对JVM平台的项目都用Java语言开发,引入了诸如Maven或Gradle这样的构建系统, 以生成可部署的产物。实际上,我们在第2章开发的阅读列表应用程序就遵循这套模型。
最近版本的Java语言有不少改进。然而,即便如此,Java还是有一些严格的规则为代码增加了不少噪声。行尾分号、类和方法的修饰符(比如public和private)、getter和setter方法,还有import语句在Java中都有自己的作用,但它们同代码的本质无关,因而造成了干扰。从开发者的角度来看,代码噪声是阻力——编写代码时是阻力,试图阅读代码时更是阻力。如果能消除一部分代码噪声,代码的开发和阅读可以更加方便。
同理,Maven和Gradle这样的构建系统在项目中也有自己的作用,但你还得为此开发和维护构建说明。如果能直接构建,项目也会更加简单。
第六章
我小时候,有一个系列电视广告,当中有两个人,一个在吃巧克力条,另一个在吃罐子里的花生酱。经由一些富有喜剧效果的小事故,两个人撞到了一起。最后,花生酱和巧克力相结合。
一个人说:“你把巧克力弄到我的花生酱里了!”另一个人回答:“是你把花生酱弄到我的巧克力上了!”
在一开始的尴尬后,两个人都认同花生酱和巧克力结合在一起是件好事。接着,旁白会建议观众试试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的Actuator。它提供了很多生产级的特性,比如监控和度量Spring Boot应用程序。Actuator的这些特性可以通过众多REST端点、远程shell和JMX获得。我们先来看看Actuator的REST端点,这种最为人所熟知的使用方式提供了最完整的功能。
第八章
想一想你喜欢的动作电影。现在假设你要去电影院看这部电影,享受视听震撼。片中有高速追逐、爆炸和激战。好人还没战胜坏人,一切偏偏戛然而止。还没等影片里的冲突解决,电影院的灯亮了,大家都被领出门外。
虽然前面的铺垫很精彩,但电影的高潮才是最重要的。没有了它,就是为了动作而动作了。现在,想象你正在开发应用程序,为解决某个业务问题投入了很多精力和创造力,但最终没
能部署应用程序,没能让别人使用这个程序并乐在其中。当然,我们应用程序大多没有汽车追逐和爆炸(至少我希望是这样的),但一路上我们也会争分夺秒。当然,并非每行代码都为生产环境而写,但什么都不部署也挺让人失望的。
目前为止,我们的焦点都集中在使用Spring Boot的特性帮助大家开发应用程序。我们遇到了不少惊喜。但如果不越过终点线,应用程序没有部署,这一切都是徒劳。
在本章,我们会在使用Spring Boot开发应用程序的基础上更进一步,讨论如何部署那些应用程序。虽然这对部署过基于Java的应用程序的人来说并无特别之处,但Spring Boot和相关的Spring 项目中有些独特的功能,基于这些功能我们可以让Spring Boot应用程序的部署变得与众不同。
实际上,大部分Java Web应用程序都以WAR文件的形式部署到应用服务器上。Spring Boot 提供的部署方式则有所不同,后者在部署上提供了不少选择。在了解如何部署Spring Boot应用程序之前,让我们看看这些可选方式,找出能满足我们需求的那些选项。
本次的内容大致的就介绍到这里拉,由于内容太多,只能简单介绍到这里,如有需要以上内容的完整版,评论区暗号333,大家可以关注私信我获取哦
成为架构师,需要经验和眼界
老码农分为两种:游击队和板凳王
坐穿板凳有利于积累经验,而不利于开拓眼界
游遍四海有利于开拓眼界,而不利于积累经验
码农的生活是高压的,唯有热情可以驱使你一边吃着苹果,一边又去摘梨
然而,又有多少热情没有随时间而冷却呢?
所以说码农要成为架构师的道路还是很漫长的,希望大家都可以努力成为一名架构师
如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,,咱们下期见。
收藏 等于白嫖,点赞才是真情。