什么是架构师

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

定义

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

要求

(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上。

第一章

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来辅助快速开发,各种繁文缛节越少越好。

开始前,我们需要先初始化一个项目。在第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的项目结构。

第三章

3.1 覆盖 Spring Boot 自动配置

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

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

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

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

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

第四章

4.1集成测试自动配置

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

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

第五章

5.1 开发 Spring Boot CLI 应用程序

大部分针对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连 ,点赞,转发,评论,,咱们下期见。

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

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

  1. springboot实战pdf_腾讯架构师Spring Boot实战篇(PDF文档)

    前言: 什么是Spring Boot?? Spring Boot应用本质上就是一个基于Spring框架的应用 Spring Boot的核心是什么? 自动配置 起步依赖 Actuator 命令行界面(C ...

  2. 从​程序员到大型分布式架构师,自己到底位于哪里(一)

    写这篇文章为了更清楚自己技术能力,同时分享给大伙,看看自己技术水平位于哪里. 个人能力有限,基于我所理解的知识来讲解一下:从程序员到大型分布式架构师,我们自己到底位于哪里. 描述不当之处还请各路大佬点 ...

  3. JAVA程序员要如何从初级程序员过渡到系统架构师?

    程序员大致的成长路线: 初级程序员(薪资6k-10k) 刚刚进入IT行业,做一些简单的项目,写一些简单的代码.写代码的时候还是会依靠复制粘贴的方式完成代码的编写,他们不考虑程序的质量,代码也写的很乱, ...

  4. 从普通JAVA程序员到阿里P8架构师,他用了六年

    工作年限:8 年服务公司:4 家(含四大门户中的两家)最近职业:Java 架构师职场关键词:社交平台.高并发系统架构设计.技术团队管理.多款从零到一的产品城市! 六年间,这位职人呆过四大门户中的两家, ...

  5. Android程序员现状:没有架构师的命,却得了架构师的病!

    Android开发的现状貌似已经是一个老生常谈的问题了.但今天不想写Android开发的现状,什么Android前景如何.Android凉凉之类被别人写烂了的话题. 今天我们来聊聊我们自己,我们And ...

  6. 程序猿,前路之路茫茫然 行业发展趋势

    程序猿,前路之路茫茫然 行业发展趋势 飞鸽传书 行业发展趋势 纵观软件行业的发展过程与趋势可以看出一共经历了以下几个阶段: ◆ 面向机器语言(Monolithic)的开发模式:根据不同平台的机器语言来 ...

  7. 为什么很多程序员没有升级到架构师?

    对我们程序员来说,发展的途径要么是走管理岗,从开发升级到项目经理甚至是部门经理:要么走技术升级路线.不过在技术路线方面,无法升级到架构师的程序员不在少数.一方面,在不少公司的高级开发岗位上,无法让程序 ...

  8. 程序员:未来世界的架构师,越老越吃香的一份职业?

    作为程序员节的 10 月 24 日已过,360 创始人周鸿祎通过个人微博发布相关内容,祝所有程序员节日快乐.视频中,周鸿祎表示,作为程序员,我一直都很骄傲.程序员是未来世界的架构师,是非常了不起的职业 ...

  9. 最新Spring Boot实战项目(权限后台管理系统)详解

    Spring Boot实战项目 - 权限后台管理系统 简介 这是一套基于spring boot 2.16.shiro.jwt.redis.swagger2.mybatis .thymeleaf.lay ...

最新文章

  1. 范道馨晟宾馆还不错!
  2. 手机zip模拟器_车祸现场模拟器简体中文免安装版 6.4G
  3. istio回归「单体应用」对我们的启发
  4. Spring和JSF集成:导航
  5. vue+node前后端分离接口调用(初学者)
  6. Oracle查询对应表是否在使用,oracle 中查询当前用户可以看到的表名、表对应的所有字段...
  7. 视图查询缓慢mysql_《高性能MySQL》读书笔记——第一章、MySQL架构与历史
  8. 公司IT管理制度——案例分享
  9. linux drop cache权限不够,Linux drop_caches
  10. Alien Skin Exposure X4 Bundle 4.5.3.66 特别版 Mac 模拟胶片效果调色滤镜
  11. 解读 intriguing properties of neural networks
  12. Jordan标准形(番外篇)——Jordan块的最小多项式
  13. 算法-回溯backtrack
  14. LeetCode 从零单刷个人笔记整理(持续更新)
  15. 66万新购奔驰漏油,车主欲暂停还贷,奔驰金融:贷款必须还!
  16. html简单登录页面制作
  17. Python爬虫与Opencv结合,制作一款自己的拍照翻译程序!
  18. springAOP监控操作日志的开发,注解@aspect的用法
  19. matlab-colormap使用
  20. 【设计模式实践系列】策略模式应用订单折扣方案

热门文章

  1. Jquery页面导航(菜单悬停,折叠效果)
  2. 我的世界java怎么玩起床战争_我的世界起床战争技巧介绍 我的世界起床战争怎么玩?-游侠网...
  3. Android-Studio 用ShareSDK集成社会化分享,短信验证码,视频录制功能
  4. Kaggle——海星目标检测比赛
  5. I2C接口协议之HT16C22驱动
  6. wordpress插件_WordPress插件样板第3部分:最后一步
  7. QA——资源管理(三)
  8. java 正则匹配手机号,身份证号,邮箱
  9. 网站是依靠哪些技术跟踪监视用户的?
  10. ASP.NET Web Forms 转换至MVC开发