前言
- 为了进一步学习微服务实战,决定就最近比较流行的微服务框架入手;先动手搭建一套微服务的框架,尽可能功能覆盖全,且不过度追求所有技术,够用就好,后续再慢慢深入。
- 打算搭建技术:spring-boot spring-cloud Eureka Ribbon Feign Hystrix Appllo Zuul 等
Spring Boot 搭建
- Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
- Spring Boot简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。
- Spring Boot为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。
- Spring Boot的核心思想就是约定大于配置,多数Spring Boot应用只需要很少的Spring配置。采用Spring Boot可以大大的简化你的开发模式,所有你想集成的常用框架,它都有对应的组件支持。
- Spring Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,Spring Boot整合了所有的框架
创建Maven工程
依赖Spring-boot脚手架
- 方式一:Parent 依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.7.RELEASE</version> <relativePath/> </parent>
- 方式二:spring-boot-dependencies 依赖 ; 建议尽量使用方式二,毕竟parent依赖只有一个
<dependencyManagement> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>${spring-boot.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencyManagement>
创建Spring-boot web项目
- spring boot 推荐的工程目录结构
+-project +- src/main/java (存储java文件) |+- 根包路径 (最上层的路径) | - SpringBootApplication.java (spring boot启动类;必须在包下,必须最上层) | |+- 其他包/其他java类 | +- src/main/resources |+- static (静态资源) | |+- template (页面模板) | |+- application.yml/application.properties (spring-boot 配置文件) | +- src/test/java (单元测试java代码) +- src/test/resources (单元测试配置文件)
- SpringBootApplication.java 启动类
- @SpringBootApplication 注解:是Sprnig Boot项目的核心注解,目的是开启自动配置
@SpringBootApplication
public class MsWebApplication {
public static void main(String[] args) {
SpringApplication.run(MsWebApplication.class, args);
}
}
启动工程
- 执行SpringBootApplication.java 的 main方法
- 问题 启动碰到下图异常,原因是SpringBootApplication类的位置在java文件夹下,而没有在底下包路径
- 启动成功后,访问工程里面的一个controller
最基本;最简单的spring-boot工程搭建完成。
引入Spring Cloud
- Spring Cloud是一个基于Spring Boot实现的云原生应用开发工具,它为基于JVM的云原生应用开发中涉及的配置管理、服务发现、熔断器、智能路由、微代理、控制总线、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
- spring cloud 并非是具体的实现,也不是某一个组件的解决方案。而是在Spring Boot基础之上构建的,用于快速构建分布式系统的通用模式的工具集。
- 所以引入Spring Cloud 只是整合这套工具集,将Spring Cloud生态带入到工程中
引入Spring Cloud
- 基于上面简单的spring boot的maven工程
- 依赖 spring-cloud-dependencies
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
- 引入工具集之后,后续需要什么就可以拿什么