1.跟我学SpringBoot-开篇引言

96
孔垂云
2017.12.03 13:25* 字数 1692

好几个月没用写博客,写东西的感觉都快不记得了。今天再次平静的坐在屏幕前,敲击机械键盘,感觉还是非常好的。
《功夫熊猫2》里面有一个单词:Inner peace,用这个词形容再准确不过了。内心平静了,物我两忘!即使再忙也要抽时间对自己的知识进行总结提炼,并进一步深化。

下面这个系列要讲的是SpringBoot,微服务的脚手架。如果评选2017年软件开发最火的,当属AI,在硅谷创业的IT工程师,90%都是AI方向的。当然从事AI的方向比较多,比如机器学习、大数据挖掘、人脸识别、语音识别等,但要从Java开发方向来讲,最火的领域就是微服务。自动SpringCloud从2015年底诞生,经过2016年的一年酝酿,2017年开发大爆发,多个科技公司在选择自己企业的微服务框架时,都投向了SpringCloud的怀抱,舍弃了阿里Dubbo。虽然两个相比,都有各自的优势与不足,但Spring社区的活跃度与贡献者都是Dubbo不能比的。这一个系列主要讲SpringBoot的各个用法,为后续的微服务做基础。

SpringBoot的诞生还是很有趣的,学习Java应用开发的,肯定会对其中的各种xml配置搞晕,在SSH框架刚诞生时,讲三个框架的整合,是很深的一门学问,因为三个框架单单xml配置就能把人搞晕。后来出了注解,简化了多项配置,但是还存在xml配置过多过臃肿问题。有一个单词叫xml evil ,说的就是java应用开发太繁杂的xml配置。因为繁杂,好多人学过.NET开发的,一下就被吓住了,门槛太高。现在社会上java程序员的工资比.NET高的原因,一个就是java开发配置很复杂,一般人搞不定。所以在对比其他语言,比如ruby、比如php等时,java的xml配置是最受人诟病的。因此为彻底解决这个问题,SpringBoot横空出世了,颠覆了多数人对java开发的看法,全都默认配置,及时一个配置也没有,一样可以启动应用,一样部署程序。

当然如果想深入掌握SpringBoot,还是要有Spring的基础的,没有Spring的基础就等于无本之木,无源之水,碰到问题还是解决不了的。

SpringBoot图标.jpeg

先来看看官方定义

1.什么是Spring Boot?

Spring Boot框架是由Pivotal团队提供的全新框架,其设计目的是用来简化基于Spring应用的初始搭建以及开发过程。SpringBoot框架使用了特定的方式来进行应用系统的配置,从而使开发人 员不再需要耗费大量精力去定义模板化的配置文件。Pivotal是在开源社区有很大的影响,公司名翻译成中文叫必微诺,估计很少人知道,但是说Spring由他们公司维护,估计就无人不知了。

2.什么是Spring Cloud?

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务注册,服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

3.微服务,Spring Boot,Spring Cloud三者之间的关系

思想:微服务是一种架构的理念,提出了微服务的设计原则,从理论为具体的技术落地提供了指导思想。
脚手架:Spring Boot是一套快速配置脚手架,可以基于Spring Boot快速开发单个微服务。
多个组件的集合:Spring Cloud是一个基于Spring Boot实现的服务治理工具包;Spring Boot专注于快速、方便集成的单个微服务个体;Spring Cloud关注全局的服务治理框架。

4. Everything is jar, Everything is http

Spring Boot通过@SpringBootApplication注解标识为Spring Boot应用程序。所有的应用都通过jar包方式编译,部署和运行。

@SpringBootApplication
public class Application {
       public static void main(String[] args) {     
           SpringApplication.run(Application.class, args);       
           System.out.println(”启动成功!");
       }
   }

可以看到,SpringBoot的启动非常简单,真正达到了一分钟就可以开发一个应用的地步,不输给Ruby等。

每个Spring Boot的应用都可以通过内嵌web容器的方式提供http服务,仅仅需要在pom文件中依赖spring-boot-start-web即可,原则上微服务架构希望每个独立节点都提供http服务。

SpringBoot的打包方式不同于以前的web程序,SpringBoot应用是以jar方式打包的,自带tomcat,可以不依赖额外的tomcat容器启动。对外提供方式多数都是http服务。

这里如果开发只有SpringBoot,是没问题的,可以完成多数功能。但是如果开发SpringCloud,没有SpringBoot是完全不行的。SpringBoot的用途非常广,同时随着现在互联网应用开发前后端分离模式的推广,SpringBoot就成为编写API接口的具体实现方式,后续以api接口开发作为例子,进行各个功能的介绍。

5.总结

如果没学过Spring的,建议先学Spring的基础,有了基础,学习SpringBoot基本是分分钟的事。
后续我会根据项目经验依次讲解SpringBoot的各项应用。

专集包含内容一览

共包含以下章节:

所有代码示例参照:

https://github.com/chykong/java_springboot

跟我学-SpringBoot
Web note ad 2