前言


一、什么是微服务

微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过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方法的定义类,找到运行的主类

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐