系列文章目录
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.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包名
启动成功!