SpringBoot(2)——SpringBoot入门:微服务

系列文章目录

1、SpringBoot(1)------创建SpringBoot项目的方式_基于注解方式开发aspectj springboot下载-CSDN博客

目录

[1、Spring Boot 入门](#1、Spring Boot 入门)

[1.1Spring Boot 简介(脚手架)](#1.1Spring Boot 简介(脚手架))

[1.2 微服务](#1.2 微服务)

[1.2.1 Spring Cloud微服务治理](#1.2.1 Spring Cloud微服务治理)

[1.2.2 微服务的优点](#1.2.2 微服务的优点)

[1.2.3 微服务的缺点](#1.2.3 微服务的缺点)

[1.3 环境准备](#1.3 环境准备)

1.3.1MAVEN设置

[1.3.2 Spring Boot HelloWorld](#1.3.2 Spring Boot HelloWorld)

[1.3.3 简化部署的具体实现方法](#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标签添加

XML 复制代码
<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相关的依赖

XML 复制代码
<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应用

java 复制代码
/**
*
  @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
*/
@SpringBootApplication
public
  class HelloWorldMainApplication {
    public static void main(String[] args) {
    // Spring应用启动起来
    SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

4.编写相关的Controller、Service

java 复制代码
@Controller
public
  class HelloController {
   @ResponseBody
   @RequestMapping("/hello")
   public String hello(){
      return "Hello
  World!";
   }
}

5.运行主程序测试

6.简化部署(将这个应用打成jar包,直接使用java -jar的命令进行执行)

XML 复制代码
<!‐‐ 这个插件,可以将应用打包成一个可执行的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进行如下配置

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、运行该项目

XML 复制代码
java -jar jar包名

启动成功!

相关推荐
爱分享的淘金达人10 分钟前
25年教师资格认定材料及认定详细流程‼
java·python·考研·小程序·tomcat
其实我就是个萌新13 分钟前
使用spring data MongoDB对MongoDB进行简单CURD操作示例
java·mongodb·spring
穆韵澜14 分钟前
SQL语言的云计算
开发语言·后端·golang
小小鸭程序员41 分钟前
NPM版本管理终极指南:掌握依赖控制与最佳实践
java·前端·spring·npm·node.js
uhakadotcom44 分钟前
提升PyODPS性能的实用技巧
后端·面试·github
字节源流1 小时前
【SpringMVC】入门版
java·后端
Code哈哈笑1 小时前
【JavaEE】创建SpringBoot第一个项目,Spring Web MVC⼊⻔,从概念到实战的 Web 开发进阶之旅
spring boot·spring·java-ee
三少爷的鞋1 小时前
深入理解 Java 中的 Integer 缓存机制
java
MrWho不迷糊1 小时前
Spring Boot 的优雅启停:确保停机不影响交易
spring boot·后端
xjz18421 小时前
Netty底层原理深度解析:高并发网络编程的核心设计
后端