SpringBoot(2)——SpringBoot入门:微服务
系列文章目录
1、SpringBoot(1)——创建SpringBoot项目的方式_基于注解方式开发aspectj springboot下载-CSDN博客
目录
1、Spring Boot 入门
1.1Spring Boot 简介(脚手架)
1.2 微服务
1.2.1 Spring Cloud微服务治理
1.2.2 微服务的优点
1.2.3 微服务的缺点
1.3 环境准备
1.3.1MAVEN设置
1.3.2 Spring Boot HelloWorld
1.3.3 简化部署的具体实现方法
1、Spring Boot 入门
1.1Spring Boot 简介(脚手架)
简化Spring应用开发的一个框架;
整个Spring技术栈的一个大整合;
J2EE开发的一站式解决方案;
优点:快速创建独立运行的spring项目以及与主流框架集成
使用嵌入式的Servlet容器,应用无需打成war包,内嵌Tomcat
Starters自动依赖和版本控制(工具箱,更方便了)
大量的自动装配,简化开发,也可以修改默认值
无需配置XML无代码生成开箱即用
准生产环境的运行时应用监控
与云计算的天然集成
1.2 微服务
微服务是一种将单一应用拆分为多个小型服务的架构风格。每个服务独立运行,专注于单一业务功能,并通过轻量级通信机制(如 HTTP/REST、gRPC 等)进行交互。微服务架构的优势包括:
- 独立性:每个服务可以独立开发、部署和扩展。
- 技术多样性:不同服务可以使用不同的技术栈。
- 容错性:单个服务的故障不会影响整个系统。
1.2.1 Spring Cloud微服务治理
2014,martin fowler
Servlet——ssh——ssm——单体——SOA——springCloud
2014 年,Martin Fowler 和 James Lewis 共同提出了 微服务架构(Microservices Architecture)的概念。这一架构风格迅速成为软件开发领域的热门话题,在此之前,软件开发的主流架构经历了从单体架构(Monolithic)到面向服务架构(SOA)的演变。
以下为软件项目架构的一个发展历程
单体架构
Web应用程序发展的早期,大部分web工程师将所有的功能模块打包到一起并放在一个web容器中运行,所有功能模块使用同一个数据库。
分布式架构(垂直架构)
针对单体架构的不足,为了适应大型项目的开发需求,许多公司将一个单体系统按业务垂直拆分为若干系统,系统之间通过网络交互来完成用户的业务处理,每个系统可分布式部署,这种架构称为分布式架构。
SOA架构
SOA是一种面向服务的架构,基于分布式架构,它将不同业务功能按服务进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
微服务架构
基于SOA架构的思想,为了满足移动互联网对大型项目及多客户端的需求,对服务层进行细粒度的拆分,所拆分的每个服务只完成某个特定的业务功能,比如订单服务只实现订单相关的业务,用户服务实现用户管理相关的业务等等,服务的粒度很小,所以称为微服务架构。
什么是单体部署?什么是微服务应用方法?
微服务:架构风格(服务微化)
微服务是指开发单个小型的但有业务功能的服务,每个服务都有自己处理和轻量通讯机制,可以部署在单个或多个服务器上。
微服务也指一种松耦合的有一定的有界上下文的面向服务架构。
- 微服务:是一种将大型软件系统拆分成多个小型、独立的服务的架构风格。每个微服务都可以独立地开发、部署和扩展,并且能够通过轻量级的通信机制进行交互。
- 松耦合:意味着各个微服务之间的依赖关系相对较少,它们之间的接口设计较为简单和明确。一个微服务的内部实现细节对其他微服务是透明的,当一个微服务发生变化时,只要其对外接口保持不变,就不会对其他微服务产生太大影响,从而提高了系统的可维护性和可扩展性。
- 有界上下文:指每个微服务都有自己明确的业务边界和上下文。在这个边界内,微服务负责处理特定的业务功能和数据,与其他微服务的业务功能和数据相互隔离。
- 面向服务架构:是一种将应用程序构建为一组相互协作的服务的架构模式。这些服务可以通过网络进行通信,以实现复杂的业务功能。面向服务架构强调服务的可复用性、可扩展性和灵活性,微服务架构是面向服务架构的一种具体实现方式,它更加注重服务的细粒度划分和独立性。
一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;
单体应用:ALL IN ONE
微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;
1.2.2 微服务的优点
1.2.3 微服务的缺点
1.3 环境准备
我使用的是:jdk1.8
maven3.6.2
IDEA2021
1.3.1MAVEN设置
给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>
1.3.2 Spring Boot HelloWorld
浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串;(maven项目改变成springboot项目)
1.创建一个maven工程;(jar)
2.导入spring boot相关的依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐starter‐parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>
org.springframework.boot</groupId>
<artifactId>
spring‐boot‐starter‐web</artifactId>
</dependency>
</dependencies>
3.编写一个主程序;启动Spring Boot应用
/**
*
@SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
*/
@SpringBootApplication
public
class HelloWorldMainApplication {
public static void main(String[] args) {
// Spring应用启动起来
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
4.编写相关的Controller、Service
@Controller
public
class HelloController {
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "Hello
World!";
}
}
5.运行主程序测试
6.简化部署(将这个应用打成jar包,直接使用java -jar的命令进行执行)
<!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐maven‐plugin</artifactId>
</plugin>
</plugins>
</build>
1.3.3 简化部署的具体实现方法
简化部署及将这个应用打成jar包,直接使用java -jar的命令进行执行
1、首先我们需要有一个配置好主类的SpringBoot项目
2、在pom.xml进行如下配置
<!‐‐ 这个插件,可以将应用打包成一个可执行的jar包;‐‐>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐maven‐plugin</artifactId>
</plugin>
</plugins>
</build>
3、打开maven视图,在生命周期(Lifecycle)选项处选择打包(install)
此时我们可以在目录处看到target包
4、在磁盘处打开target包,打开黑窗
5、运行该项目
java -jar jar包名
启动成功!