【尚硅谷Spring Boot】入门2 ~ 4:简介、准备
02、Spring Boot简介
- 背景
J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。 - 解决
Spring全家桶
时代;Spring Boot
➡ J2EE一站式解决方案;Spring Cloud
➡ 分布式整体解决方案;
- 优点
- 快速创建独立运行的Spring项目以及与主流框架集成;
- 使用嵌入式的Servlet容器,应用无需打成WAR包;
- starters(启动器)自动依赖与版本控制;
- 大量的自动配置,简化开发,也可修改默认值;
- 无需配置XML,无代码生成,开箱即用;
- 准生产环境的运行时应用监控;
- 与云计算的天然集成;
- 缺点
- 容易入门,难以精通;
- 大型项目的部署和运维较麻烦;
- 总结
- 简化Spring应用开发的一个框架;
- 整个Spring技术栈的一个大整合;
- J2EE开发的一站式解决方案;
03、微服务简介
在2014由Martin Fowler提出,是一种架构风格(服务微化)。
- 一个应用应该是一组小型服务;
- 每个服务运行在自己的进程中;
- 每个服务可以通过HTTP的方式进行互通;
在微服务出现之前的架构风格:单体应用(ALL IN ONE),所有服务写在一个应用中。
- 编写应用 ➡ 打包成war包 ➡ 部署在在tomcat中 ➡ 访问数据库、提供服务等。
- 优点
- 开发、测试简单;
- 部署简单;
- 水平扩展方便;
- 缺点
- 牵一发而动全身;
- 难以满足日益增长的软件需求;
微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元。
- 下图形象的体现单体应用(左)和微服务(右)的区别:
服务需要微化到什么程度?
如何才能微化服务?
······
请参照Martin Fowler编写的微服务文档
一个大型微服务项目类似这样:
可想而知这个项目的部署和运维都是十分麻烦的。
- 但是Spring提出了解决办法:
- Spring Boot快速构建应用;
- Spring Cloud搭建大型分布式网络;
- Spring Cloud Data Flow进行流式计算、数据处理;
04、环境准备
环境约束
- jdk1.8:Spring Boot推荐jdk1.7及以上;
- 个人:java 1.8.0_251
- maven3.x:maven 3.3以上版本;
- 个人:Apache Maven 3.6.3
- IntelliJ IDEA 2020.1.4 x64;
- SpringBoot 1.5.9.RELEASE以上;
- 个人:2.3.1.RELEASE;
与老师的版本略有出入,不过个人认为影响不大。
maven设置
首先设置使用自己的maven库
maven配置文件(settings.xml)设置
给maven 的settings.xml配置文件的profiles标签添加:
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
给maven 的settings.xml配置文件的mirrors标签添加:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>