SpringBoot(一)概述、HelloWord案例

1、SpringBoot 简介

回顾什么是Spring

Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架。

Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。

Spring是如何简化Java开发的

为了降低Java开发的复杂性,Spring采用了以下4种关键策略:

1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean;

2、通过IOC,依赖注入(DI)和面向接口实现松耦合;

3、基于切面(AOP)和惯例进行声明式编程;

4、通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;

什么是 SpringBoot

Spring Boot 基于 Spring 开发,Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于 Spring 框架的应用程序。也就是说,它并不是用来替代 Spring 的解决方案,而是和 Spring 框架紧密结合用于提升 Spring 开发者体验的工具。Spring Boot 以约定大于配置的核心思想,默认帮我们进行了很多设置,多数 Spring Boot 应用只需要很少的 Spring 配置。同时它集成了大量常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz 等等),Spring Boot 应用中这些第三方库几乎可以零配置的开箱即用。

简单来说就是 SpringBoot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot整合了所有的框架 。

Spring Boot的主要优点:

  • 为所有 Spring 开发者更快的入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和XML配置的要求

2、微服务

什么是微服务?

微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http 的方式进行互通。要说微服务架构,先得说说过去我们的单体应用架构。

单体应用架构

所谓单体应用架构(all in one)是指,我们将一个应用的中的所有应用服务都封装在一个应用中。

无论是ERP、CRM或是其他什么系统,你都把数据库访问,web访问,等等各个功能放到一个war包内。

  • 这样做的好处是,易于开发和测试;也十分方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
  • 单体应用架构的缺点是,哪怕我要修改一个非常小的地方,我都需要停掉整个服务,重新打包、部署这个应用war包。特别是对于一个大型应用,我们不可能吧所有内容都放在一个应 用里面,我们如何维护、如何分工合作都是问题。

微服务架构

all in one的架构方式,我们把所有的功能单元放在一个应用里面。然后我们把整个应用部署到服务器上。如果负载能力不行,我们将整个应用进行水平复制,进行扩展,然后在负载均衡。

所谓微服务架构,就是打破之前 all in one 的架构方式,把每个功能元素独立出来。把独立出来的功能元素的动态组合,需要的功能元素才去拿来组合,需要多一些时可以整合多个功能元素。所以微服务架构是对功能元素进行复制,而没有对整个应用进行复制。

这样做的好处是:

  1. 节省了调用资源。
  2. 每个功能元素的服务都是一个可替换的、可独立升级的软件代码。
    在这里插入图片描述

如何构建微服务

一个大型系统的微服务架构,就像一个复杂交织的神经网络,每一个神经元就是一个功能元素, 它们各自完成自己的功能,然后通过http相互请求调用。比如一个电商系统,查缓存、连数据库、浏览页面、结账、支付等服务都是一个个独立的功能服务,都被微化了,它们作为一个个微服务共同构建了一下个庞大的系统。如果修改其中的一个功能,只需要更新升级其中一个功能服务单元即可。

但是这种庞大的系统架构给部署和运维带来很大的难度。于是,spring为我们带来了构建大型分布式微服务的全套、全程产品:

  • 构建一个个功能独立的微服务应用单元,可以使用springboot,可以帮我们快速构建一个应用;
  • 大型分布式网络服务的调用,这部分由spring cloud来完成,实现分布式;
  • 在分布式中间,进行流式数据计算、批处理,我们有spring cloud data flow。
  • Spring为我们想清楚了整个从开始构建应用到大型分布式应用全流程方案。

在这里插入图片描述

3、HelloWorld 入门案例

准备工作

我们将学习如何快速的创建一个Spring Boot应用,并且实现一个简单的Http请求处理。通过这个例子对 Spring Boot 有一个初步的了解,并体验其结构简单、开发快速的特性。

我的环境准备:

  • JDK 1.8
  • Maven-3.6.1
  • SpringBoot 最新版
  • IDEA

创建基础项目说明

Spring官方提供了非常方便的工具让我们快速构建应用

Spring Initializr:https://start.spring.io/

项目创建方式一:使用Spring Initializr 的 Web页面创建项目【了解即可】

1、打开 https://start.spring.io/

2、填写项目信息

3、点击 ”Generate Project“ 按钮生成项目;下载此项目

4、解压项目包,并用IDEA以Maven项目导入,一路下一步即可,直到项目导入完毕。

5、如果是第一次使用,可能速度会比较慢,包比较多、需要耐心等待一切就绪。

项目创建方式二:使用 IDEA 直接创建项目

1、创建一个新项目
在这里插入图片描述

2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
在这里插入图片描述
3、填写项目信息
在这里插入图片描述
4、选择初始化的组件(初学勾选 Web 即可)
在这里插入图片描述
5、填写项目路径

6、等待项目构建成功

项目结构分析

通过上面步骤完成了基础项目的创建。就会自动生成以下文件。
在这里插入图片描述
1、程序的主启动类

2、一个 application.properties 配置文件

3、一个 测试类

4、一个 pom.xml

分析 pom.xml 文件

<!-- 父依赖 -->
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <!-- web场景启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- springboot单元测试 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <!-- 剔除依赖 -->
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

<build>
    <plugins>
        <!-- 打jar包插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

如上所示,主要有四个部分:

  • 项目元数据信息:创建时候输入的 Project Metadata 部分, 也就是Maven项目的基本元素,包括: groupld、 artifactld、 version、name、description等。
  • parent:继承 spring-boot-starter-parent 的依赖管理,控制版本与打包等内容。
  • dependencies:项目具体依赖,这里包含了 spring-boot-starter-web 用于实现HTTP接口(该依赖中包含了Spring MVC),官网对它的描述是:使用 Spring MVC 构建Web (包括RESTful) 。应用程序的入门者,使用Tomcat作为默认嵌入式容器。 spring-boot-starter-test 用于编写单元测试的依赖包。
  • build:构建配置部分。默认使用了 spring-boot-maven-plugin,配合spring-boot-starter- parent 就可以把 Spring Boot 应用打包成JAR来直接运行。

编写一个http接口

1、在主程序的同级目录下,新建一个controller包【一定要在同级目录下,否则识别不到

2、在包中新建一个HelloController类

@RestController
public class HelloController {
    
    @RequestMapping("/hello")
    public String hello(){
        return "hello world";
    }
    
}

3、编写完毕后,从主程序启动项目,浏览器发起请求,看页面返回

  • 控制台数据了 SpringBoot 的 banner
  • 控台数据了 Tomcat 访问的端口号
  • 访问hello 请求,字符串成功返回
    在这里插入图片描述
    4、将项目打包成 jar 包

在这里插入图片描述

5、打成jar包之后,就可以在任何地方运行测试了。

java -jar命令运行,在浏览器再次访问即可。

在这里插入图片描述

扩展:修改 banner 图案

在线成功你想要图案:https://www.bootschool.net/ascii

只需一步:到项目下的 resources 目录下新建一个banner.txt 即可。

找一个你喜欢的图案复制进去运行即可看到效果。
在这里插入图片描述
也会持续更新后面的内容!!


如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客

猜你喜欢

转载自blog.csdn.net/weixin_45606067/article/details/108048710