关于spring的学习
面试官问我:spring、springboot、springcloud的区别,我笑了
如以上文章所提,spring是一个技术体系,集合了springframework、springboot、springcloud等等(具体可参考https://spring.io/projects)
引一段话:
千万不要把Spring和Spring Framework搞混淆了,很多文章都错误的定义了spring:spring是一个一站式的轻量级的java开发框架,核心是控制反转(IoC)和面向切面(AOP),针对于开发的WEB层(springMVC)、业务层(IoC)、持久层(jdbcTemplate)等都提供了多种配置解决方案。这是Spring Framework的定义,至于Spring,是整个生态。
springboot
特点:
1、创建独立的spring应用程序
2、嵌入Tomcat, Jetty or Undertow(无需部署WAR文件)
3、提供特有的启动依赖,以简化构建配置。
4、尽可能的自动配置Spring和3rd Party库
5、提供可用于生产的功能,例如指标,运行状况检查和外部化配置
6、完全没有代码生成,也不需要XML配置
springboot最大的特点就是能轻松的创建独立的、基于生产级别的应用程序,并能运行它。最轻松的是不需要复杂的配置。
快速创建一个最基本的springboot应用程序:
**
**
填写项目的groupId、artifactId
不用选依赖,直接跳过
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
继承父工程spring-boot-starter-parent,两个依赖spring-boot-starter、spring-boot-starter-test的version继承自父工程。此时的工程已经可以运行了。(只依赖spring-boot-starter包,不是web工程,不会占用端口。相当于一个main方法,跑的结果如下:)
当新依赖spring-boot-starter-web包时,该项目就变成一个web项目,springboot自带的tomcat会自动占用8080端口,启动的结果如下:
```bash
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
`
spingcloud
springboot可以快速开发单个微服务。Spring Cloud事实上是一整套***基于Spring Boot的微服务解决方案***。springcloud要基于springboot来实现,离不开springboot。
springcloud为开发者提供了 很多工具, 用于快速goujian构建分布式系统的一些通用模式,如:配置中心、注册中心、服务发现、限流、网关、链路追踪等。
springboot创建,springcloud协调。springcloud每个微服务解决方案都是基于springboot构建的。