SpringBoot之微服务架构
微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通。
前言
一、什么是微服务
微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通。
单体应用架构
所谓单体应用架构(all in one)是指,我们将一个应用中的所有应用服务都封装在一个应用中。
这样的好处是易于开发和测试;也十分方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了
这样的缺点是哪怕要修改一个很小的地方,我们都需要停掉整个服务,重新打包、部署这个应用war包。特别对于一个大型应用,我们不可能把所有内容都放在一个应用里面,我们如何维护、如何分工合作都是问题。
微服务架构
所谓微服务架构,就是打破之前 all in on 的架构方式,把每个功能元素独立出来。把独立出来的功能元素动态组合。
1、节省了调用资源
2、每个功能元素的服务都是一个可替换的、可独立升级的软件代码
二、第一个springboot程序
使用 IDEA 创建 spring 项目时,因为网络波动导致连接不上spring构建网站,后面就出现报错 Initialization failed for ‘https://start.spring.io’
如果是网络问题,那你可以使用国内的构建网站构建,比如切换阿里构建
https://start.aliyun.com
原理初探
自动配置:
pom.xml:
spring-boot-dependecies:核心依赖在父工程中!
在写或者引入一些SpringBoot依赖的时候,不需要指定版本,因为有这些版本仓库
启动器:
说白了就是Springboot的启动场景,
比如spring-boot-starter-web,就会帮我们自动导入web环境所有的依赖
springboot会将所有的功能场景都变成一个个的启动器
要使用什么功能,就只需要找到对应的启动器即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
主程序
@SpringBootApplication
public class HelloworldApplication {
public static void main(String[] args) {
SpringApplication.run(HelloworldApplication.class, args);
}
}
1、注解:
@SpringBootApplication 标注这个类是一个springboot的应用
@SpringBootConfiguration springboot的配置
@Configuration spring配置类
@Component 说明这也是一个spring的组件
@EnableAutoConfiguration 自动配置
@AutoConfigurationPackage 自动配置包
@Import({AutoConfigurationImportSelector.class}) 自动配置导入选择获取所有的配置:
List configurations = this.getCandidateConfigurations(annotationMetadata, attributes);
2、SpringApplication.run(HelloworldApplication.class, args); 将springboot应用启动
SpringApplication
这个类主要做了以下四件事情
- 推断应用的类型是普通的项目还是Web项目
- 查找并加载所有可用初始化器,设置到initializers属性中
- 找出所有的应用程序监听器,设置到listeners属性中
- 推断并设置main方法的定义类,找到运行的主类
更多推荐
所有评论(0)