【SpringBoot】体系描述

9 篇文章 0 订阅
2 篇文章 0 订阅

前言

描述

SpringBoot诞生的目的就是用来简化Spring应用开发过程,它使用了特定的方式来进行配置,从而使得开发人员不在需要定义一系列样板化的配置文件,从而专注于核心业务开发。

基本原理

SpringBoot提供了开箱即用的设置,这样你就可以有条不紊地开始。多数SpringBoot应用需要很少的Spring配置

概述

主要特性

最重要的四个核心特性:

自动配置:SpringBoot针对很多Spring应用程序常见的功能自动提供相关配置

依赖关系:你只需告诉SpringBoot所需的功能类型,SpringBoot将所需的库添加到构建库中。

命令行界面:这是SpringBoot的可选特性,可让你编写代码并完成应用程序而无需构建传统项目。

Autuator:让您能够监控运行中的SpringBoot应用程序

SpringBoot创建流程:

创建Maven项目

添加依赖

编写代码

运行程序

SpringBoot基础 

SpringBoot启动类与注解@SpringBootApplication

@SpringBootApplication 是一个三合一的注解

@SpringBootConfiguration  :该注解功能和@Configuration注解类似,用于修饰一个配置类,以启动基于Java的配置。
@EnableAutoConfiguration  :注解用于启用自动配置,以省去繁琐的手动配置。
@ComponentScan :该注解用于启用组件扫描,这样你创建的控制器和其他组件将自动被发现并注册为Spring应用程序上下文中的bean。

SpringBoot自动配置原理 

SpringBoot在运行项目启动类时会加载classpath上各个库中META-INF目录下的spring.factories文件,将这些配置文件中的配置载入Spring容器,实现自动配置。

使用SpringBoot开发Web应用程序 

使用SpringBoot创建Web应用程序

IDEA

1、创建一个新项目
2、选择spring initalizr , 可以看到默认就是去官网的快速构建工具那里实现
3、填写项目信息
4、选择初始化的组件(初学勾选 Web 即可)
5、填写项目路径
6、等待项目构建成功

Thymeleaf语法(这里简单介绍) 

变量表达式 ${...}

用于显示某个变量的值,可以是普通表达式的计算结果,或者是服务端返回的某个属性的值。

选择变量表达式 *{...}

可以用于在内层引用外层对象,从而简化表达式书写

消息表达式 #{...}

可用于读取和显示文本文件中的内容,如属性文件,主要用于显示读取的文本消息或实现国际化。

URL链接表达式 @{...}

片段表达式 ~{...}

用于定义模板内容,并在模板页面中引用模板页或模板片段,相当于定义模板内容,然后可以将该片段在任何模板页面的任何地方使用。

在SpringBoot 程序中处理JSON数据

常用的JSON处理器

Jackson:SpringBoot默认的

Gson

Fastjson:阿里开发的(越来越多的阿里开发的,后面会接触到更多阿里开发的)

Json-lib

在SpringBoot程序中处理JSON数据

一般在src/main/resources/static/errot/404.html(等等路径)

使用SpringBoot构建ReatAPI 

REST(Reqresentational State Transfer-表述性状态转移)是一种设计API的模式,一种软件架构风格。构建REST API 时最常用的数据格式是JSON,源于JSON能直接被JavaScript读取,所欲JSON格式编写的REST风格的API具有简单、易读、易用的特点。

最常用

GET:获取资源

POST:添加一个新资源

PUT:添加或者修改一个资源,存在就修改,否则添加,这里的修改是完整修改

DELETE:删除资源

创建REST API 需要使用SpringMVC提供的一些注解,包括@PostMapping、@DeleteMapping、@PutMapping、@GetMapping分别对应增删改查

SpringBoot的数据访问 

自带默认的数据源就不说课,一般是Druid(阿里的)

pom.xml

<!-- SpringBoot的依赖配置-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.5.14</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            
            <!-- 阿里数据库连接池 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
<druid.version>1.2.11</druid.version>

 application.yml

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: root
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password: 
            # 初始连接数
            initialSize: 5
            # 最小连接池数量
            minIdle: 10
            # 最大连接池数量
            maxActive: 20
            # 配置获取连接等待超时的时间
            maxWait: 60000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            # 配置一个连接在池中最大生存的时间,单位是毫秒
            maxEvictableIdleTimeMillis: 900000
            # 配置检测连接是否有效
            validationQuery: SELECT 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter: 
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username: ruoyi
                login-password: 123456
            filter:
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    config:
                        multi-statement-allow: true

SpringDataJPA

JPA是一种规范,一种Java持久化解决方案,是Java EE标准之一。其中Hibernate框架就是JPA规范最流行和最强大的实现之一

SpringBoot程序中集成MyBatis 

1.创建数据库和表

2.创建SpringBoot应用程序

3.添加MyBatis启动依赖和其他必要依赖

4.配置数据源

5.创建实体类

6.创建或生成Mapper接口和Mapper映射文件

7.开启Mapper组件的包扫描

8.创建Controller、Service等组件

9.部署和运行程序

这里提到一个常用的分页插件PageHelper,两步

添加PageHelper依赖

<!-- pagehelper 分页插件 -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>${pagehelper.boot.version}</version>
</dependency>

使用PageHelper

SpringBoot程序的消息通信 

JMS消息传递模型

点对点模型(Point-to-Point,P2P)

发布/订阅模型(Publish/Subscribe,Pub/Sub)

1.点对点消息传递域的特点如下:

   a.每个消息只能有一个消费者

   b.消息的生产者和消费者之间没有时间上的相关性。无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。

      

  2.发布/订阅消息传递域的特点如下:

    a.每个消息可以有多个消费者

    b.生产者和消费者之间有时间上的相关性。订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费者消费它在未处于激活状态时发送的消息。

    

  3.在点对点消息传递域中,目的地被称为队列(queue);在发布/订阅消息传递域中,目的地被称为主题(topic)

SpringBoot程序中集成ActiveMQ 

SpringBoot实现点对点模型消息传送

执行步骤:

1.启动ActiveMQ服务

2.创建客户端程序

3.添加ActiveMQ启动依赖

4.配置ActiveMQ属性

5.编写消息发送程序

6.编写消息接收程序

7.测试发送和接收消息

SpringBoot实现发布/订阅模型消息传递 

和点对点类似,只需改一个配置

jms:
  pub-sub-domain: true

SpringBoot测试 

软件测试概述

软件测试方法

从是否关心软件内部结构和具体实现的角度划分

1.黑盒测试

2.白盒测试

3.灰盒测试

从是否执行代码角度划分

1.静态测试

2.动态测试

从软件开发的过程按阶段划分

1.单元测试

2.集成测试

3.系统测试

4.验收测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aaron_Liu0730

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值