Fork me on GitHub

SpringBoot入门

一、Spring Boot入门

Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用

背景:

J2EE笨重的开发,繁多的配置,低下的开发效率,复杂的部署流程,第三方技术集成难度大

解决:

“Spring全家桶”时代

Spring Boot–>J2EE一站式解决方案

Spring Cloud–>分布式整体解决方案

优点:

  • 快速创建独立运行的Spring项目以及主流框架集成
  • 使用嵌入式的Servlet容器,应用无需打成WAR包
  • starters(启动器)自动依赖与版本控制,想用web功能就导入web功能的启动器starters,想用redis就导入redis的starters,所有的企业级开发场景都有相应的starters启动器,导入就可自动依赖。
  • 大量的自动的配置,简化开发,也可修改默认值(通过spring boot的配置文件)
  • 无需配置XML,无代码生成,开箱即用(都是用一些写好的API,自动配置好XML,SpringBoot应用创建出来就能用,并不是说有一些自动生成的XML工具)
  • 准生产环境的运行时应用监控
  • 与云计算的天然集成
  • ps(shift+tab退出无序列表)

缺点:易学难精

1、Spring Boot简介

简化Spring应用开发的一个框架

整个Spring技术栈的一个大集合

J2EE开发的一站式解决方案

2、微服务

微服务文档

Microservices:a definition of this new architectural term

微服务:架构风格

the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.

一个应用应该是一组小型服务:可以通过HTTP的方式进行互通

单体应用:ALL IN ONE所有的东西都写在一个里面

Traditional web application architecture

单体

OA,CRM,ERP系统,以前都是创建一个应用然后将所有的页面,代码都放在这个应用里,然后把整个应用打包打成WAR包,然后部署到Tomcat上,应用访问数据库,提供前端访问的页面,这个应用就跑起来了,这是传统的WEB应用架构模式,传统的优点:比如开发测试简单,develop test deploy scale,开发,测试,部署,扩展也都简单。

水平扩展也简单,当我们应用负载能力不行的时候,我们把相同的应用复制上十几份,放在十几个服务器里,十几个服务器都来跑我们这些应用程序,我们通过负载均衡机制,就可以来提高我们的并发能力。

单体应用的问题:

这是一个牵一发而动全身的问题,有可能因为我们一个小小的修改,导致我们整个应用重新打包部署运行。

更大的挑战是我们日益增长的软件需求,现在可能随便一个应用都有可能成为一个大的需求,大应用不可能全部ALL IN ONE写在一个里面,然后应用到底有多大,该如何维护,该如何分工合作,这是一个问题。

微服务

微服务

单体应用:

就是打破以前的传统方式,以前是将所有的功能单元放在一个应用里面。然后把整个应用部署到服务器上,如果服务器负载能力不行,把同一份应用水平复制,然后扩展到其他服务器。

微服务:

一个微服务架构把每个功能元素放进一个独立的服务中,把每个功能元素独立出来,通过功能元素的动态组合,比如A服务器需要某个功能元素多,就多放一点,B服务器需要某个功能元素少,就少放一点

并且通过跨服务器分发这些服务进行扩展,某些功能只在需要时才复制。也就是功能元素级别的复制,并不是整个应用的复制。1、节省了调用资源,把服务微化起来2、每一个服务都应该是一个可替换的,可独立升级的软件单元

区别

每一个功能元素最终都是可独立替换,可独立升级的软件单元

SOA架构和微服务架构区别:

  • SOA(Service Oriented Architecture):面向服务的架构,一种设计方法,其中包含多个服务,服务之间通过相互依赖最终提供一系列的功能,一个服务通常以独立的形式存在于操作系统进程中,各个服务之间通过网络调用。

  • 微服务架构:其实和SOA架构类似,微服务是在SOA上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的但各业务系统会拆分成多个可以独立开发,设计,运行的小应用

    这些小应用之间通过服务完成交互和集成

主要区别:

功能 SOA 微服务
组件大小 大块业务逻辑 单独任务或小块业务逻辑
耦合 通常松耦合 总是松耦合
公司架构 任何类型 小型,专注于功能交叉团队
管理 着重中央管理 着重分散管理
目标 确保应用能够交互操作 执行新功能,快速拓展开发团队

掌握内容:

  • Spring框架
  • 熟练使用Maven进行项目构建和依赖管理
  • 熟练使用Eclipse、IDEA

环境约束:

  • JDK1.8
  • Maven3.x:Maven 3.3以上版本
  • IntelliJ IDEA
  • Spring Boot 1.5.9.RELEASE