基于Spring Boot和Spring Cloud实现微服务架构学习(二)-Spring Boot总结

引用

引用某位技术大牛推荐的技术成长方法:
        1)我们要经常关注技术网站,如csdn,iteye,infoq等;
  2)要努力提高英语水平,学习研究第一手的技术资料;
  3)对新技术要保持饥饿和敏感,一旦有新技术要主动的了解和学习;
  4)学会对技术进行高层次的总结和理解,在相似的新技术出现时可以类比学习快速上手;
  5)善于使用搜索引擎检索技术和问题,因为技术资料英文的较多,推荐使用谷歌搜索所有问题、Github检索示例代码、StackOverflow检索报错信息。
  6)善于利用成熟的第三方库,当使用一项新技术的时候,不要想着自己一点点啃,要善于利用已经成熟的第三方库,不要重复造轮子;

介绍

回归主题,Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。Spring Boot的目标不在于为已解决的问题域提供新的解决方案,而是为平台带来另一种开发体验,从而简化对这些已有技术的使用。

下图显示 Spring Boot 在 Spring 生态中的位置:


文章中我不会讲诉如何快速搭建Spring Boot项目,一是因为搭建非常简单,二则是网上快速应用helloworld的demo太多了,我觉的写了也没有意义,我希望的重点是告诉大家,为什么要用Spring Boot,什么时候用它,以及用它会带来什么样的好处和缺点。了解了这些之后,你最后是去官网的导读部分跟着讲解再实际操作一遍,体验一下它强大的快速搭建能力和使用魅力(http://projects.spring.io/spring-boot/)。

Spring Boot学习要求

  • Maven/Gradle
  • Git
  • Docker
  • Docker Compose
学习spring boot最好要有Spring的使用基础,当然,spring boot本身也能让你快速的入门使用它,但如上面说的,一旦你碰到问题,没有spring使用基础,你会变得十分被动,加上文档很少,网上基本找不到bug资料,所以你懂的;然后就是要求你多少了解Maven或者grade配置,spring boot是基于这些实现项目依赖的管理;最后,说说IDE工具,这也是个人使用习惯,个人现在比较推荐大家学习使用下IntelliJ IDEA,虽然他和常用的Eclipse工具有所不同,但使用起来,它的索引机制,会让我们的开发体验相当顺畅(除了第一次打开建立索引非常耗时外)。

对于Git、Docker容器技术,其与Spring Boot的关联度非常的高,大部分的应用都是托管在GitHub上,然后,因为Spring Boot开发的应用大多服务与微服务架构,而这种架构通常依托与Docker实现快速部署和compose一键部署,所以了解和学习他们也变得非常有必要。至于后面要学习的Docker部署集群管理工具Mesos或者Kubernetes等,其实也是要掌握的,这里推荐coding(码市)网站,上面有很多技术博客讲解实际开发者使用体验和技巧。

考虑这么国外的资源,国内下载时好时慢,所以推荐修改配置指向国内资源,如Maven库可以用开源中国的(连接aliyun和jboss等资源的settings.xml文件可以在我上传资源下载),还有docker的所有镜像在DaoCloud下,他们同时提供了一个Docker Hub加速器工具,可以永久修改docker默认镜像default的资源下载地址(http://get.daocloud.io),而且DaoCloud实时更新官网资源,承诺永久免费,所以广告就打这么多,推荐个人使用。

Spring Boot的特性

1)快速构建独立Spring应用程序
2)嵌入式Tomcat,Jetty容器,无需部署WAR包
3)简化Maven及Gradle配置
4)尽可能的自动化配置Spring,无代码生成和xml配置
5)直接植入产品环境下的实用功能,比如度量指标、健康检查及扩展配置等
6)对主流开发框架和工具链做无配置集成

Spring Boot优缺点

优点:

1)解决配置繁琐的问题,最大化的实现convention over configuration(约定大于配置);
2)springboot 要解决的问题, 精简配置是一方面, 另外一方面是非常方便的让spring生态圈和其他工具链整合(比如redis, email, elecsearch)
3)有Pivotal和Netflix这两个干爹罩着, 个人认为SpringBoot(由Pivotal团队提供)前途一片光明(国内的一些大厂其实早就再用了)

缺点:

1)因为刚出不久,文档略少,加上对Spring Boot的auto configuration loading等机制的封装, 给人感觉入门容易,但是如果没有完整学习spring的体系,碰到问题就一脸懵逼。据我所知,很多玩spring boot的人连怎么打开底层包的log都不知道,怎么可能能发现问题呢?比如很多人会碰到启动时不知道框架哪里抽风,会导致系统无法启动,报的错都很神奇,搜完百度和谷歌和stackflow都没解决方案。(后来有人说@DependsOn注解就能搞定,没试过不清楚行不行);
2)版本迭代速度太快(最近太火了), 一些模块改动很大, 比如 springboot-test的1.3.5 vs 1.4

总结

Spring boot给我的感觉是入门容易,深入难。它实现了我们之前常用的Spring技术,并通过零配置或者说约定大于配置的方式将其集成在一起,方便开发者快速开发应用,这种封装的方式有好有坏,当然操作变简单这是最真实的体验。Boot的诞生依靠的是近几年SOA式的微服务架构的流行,也正是这个原因,他多数应用在微服务中充当个体。

最后

下节我们将按照结构复杂的单一系统 > 微服务 > Docker化 > 自动化,演变思路,讲解过渡到Spring cloud使用上。
展开阅读全文

没有更多推荐了,返回首页