SpringBoot学习笔记01

1. SpringBoot简介及简单使用

1.1 SpringBoot介绍

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

总结:
Spring Boot是全新的框架,用来简化Spring的搭建和开发过程,例如:依赖的引入
 
作用:
SpringBoot的推出 让程序员更加专注于业务处理, SpringBoot是学习微服务框架基石
Spring和SpringBoot关系 :
SpringBoot是Spring的工具API框架

1.2 SpringBoot 入门案例

1.2.1 安装SpringBoot插件:Spring Assistant

1).IDEA破解版本,自带SpringBoot插件 所以无需安装
2).IDEA社区版本.需要手动安装一个SpringBoot插件.

目的:安装这个插件的目的是为了能够创建Springboot的项目

在这里插入图片描述

1.2.2 创建SpringBoot项目

1)
在这里插入图片描述
2)
在这里插入图片描述
注:两种方式都可以创建Spring Boot工程

3)
在这里插入图片描述
注:

  1. Spring Boot是一个框架,能够帮你管理一些常用的依赖,之前我们学习Maven时,存在一些弊端,我们不知道使用哪个依赖包,这对新手很不友好,而SpringBoot的诞生,解决了这个问题,我们只需要在上面的页面中勾选自己需要的业务功能,例如:mysql、Spring Web等
  2. Spring Boot是Spring的工具API框架,相当于把Spring的一些功能进行了封装,而每个版本可能都会有更新,因此我们选择Springboot的版本时,使用较新较稳定的即可

4)创建完成后的结构如下:
在这里插入图片描述
5)执行main方法检查运行是否正常
在这里插入图片描述
6)如图所示表示程序正常
在这里插入图片描述

1.3 关于SpringBoot项目pom.xml文件说明

1.3.1 parent标签

<!--1.parent标签  父级工程
	SpringBoot将现有主流的框架都进行了整合,
	在内部完成了jar包的依赖的配置.如果用户需要,则只添加某些核心包
	那么所有的依赖都会按照规则自动的下载.
	-->
<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.4.5</version>
	<relativePath/> <!-- lookup parent from repository -->
</parent>

请点击此处了解更多SpringBoot中parent的作用!点我!

1.3.2 依赖配置项

<!--Springboot通过启动项的方法的 进行jar包文件的加载.
	同时这些功能中的配置项 SpringBoot有些也会自动的完成.
	无特殊的要求 无需手动的配置.
	开箱即用的思想!!!!
		-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

说明:
以前我们创建Spring项目时,为了让注解和一些jar包生效,我们会写一个配置类,而在SpringBoot中,大多数情况下,我们只要添加了spring-boot-starter-XXX,这个启动项依赖,我们就不需要写Spring的配置类了,除非是一些功能特别多的包。
例如:spring-boot-starter-web,除了会给我们进行对应jar包的引入之外,还会为我们进行一些常用配置
 
开箱即用的思想:也就是拿到了无需过多的配置,直接使用即可

1.3.3 build标签

<!--
	关于build标签说明
	1.build标签它是maven工程的要求.
	2.作用: 完成项目的打包/发布等一系列的功能.
	3.该标签的使用是SpringBoot必须的,如果没有该标签则项目无法使用jar包运行
-->
<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

1.3.4 关于jar包依赖传递性

1)问题说明:
当引入webjar包时, 其他jar包文件如何依赖的?
在这里插入图片描述
2)原理说明:

例子:
1.A.jar ----> B.jar
2.B.jar -----> C.jar

maven原理说明:
1.当maven解析pom.xml文件时,会根据maven坐标查找指定的jar包文件.
在这里插入图片描述
2.当jar包加载完成之后,由于该项目也是maven工程,所以maven工具会解析该项目的pom.xml文件
根据POM.xml文件 再次加载依赖包 直到所有的jar包依赖加载完成
在这里插入图片描述

1.3.5 拓展

1)maven 如何保证jar包依赖安全性(了解)
算法: SHA1
SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数

1.1)关于hash问题:
在这里插入图片描述
1.2)核心原理说明:
判断传递前后的sha1算法是否相同,如果相同则标识传输正常,
如果不同,则文件有问题.
在这里插入图片描述

2.SpringBoot的学习

2.1 配置文件说明

2.1.1 关于properties文件说明

在这里插入图片描述
缺点:假设我们将来需要引入大量第三方配置,如图所示,会造成文件的重复冗余,且不便于管理。
在这里插入图片描述

2.2.2 关于yml文件说明

说明: 虽然pro文件是SpringBoot默认配置文件.但是其中编码格式比较繁琐,不便于查看.所以在项目中一般使用YML文件.
在这里插入图片描述

2.2 测试案例:@Value属性赋值

需求:
在YML配置文件中编辑key=value结构,之后利用注解为属性赋值.

2.2.1 编辑YML配置文件

#YML文件语法
## 1.YML数据结构k-v结构
## 2.k与v 需要使用 :"空格" 连接
## 3.YMl配置文件有父子级关系 所以注意缩进项的位置
server:
  port: 8090    #配置端口
  servlet:      #web项目发布路径
    context-path: /  #/表示根目录

#定义dept属性值 YML文件默认支持UTF-8
dept:
  id: 100
  name: 财务部

2.2.2 为Dept对象赋值

在这里插入图片描述

2.2.3 编辑springBoot测试类

在这里插入图片描述

补充:
@SpringBootTest注解在执行测试方法时,会启动Spring容器,类似于之前的new AnnotationConfigApplicationContext(SpringConfig.class);

2.2.4 拓展

1)注意事项: 以后写代码都必须写到主启动类的同包及子包中
类似于包扫描我们之前是componentScan(“com.jt”),主启动类的位置相当于是这个包扫描的路径

2.3 利用properties文件为属性赋值

说明:
前面我们使用yml配置文件为属性赋值,这样会暴露出一些问题,一是将来如果有大量的业务数据,那么yml文件会显得很冗余,二是如果将业务数据和一些配置信息放在一起容易造成结构的混乱,不利于管理,因此,我们需要引入pro文件来存放业务数据

2.3.1 编辑pro文件

在这里插入图片描述

2.3.2 实现自动赋值

在这里插入图片描述

2.4 lombok插件

2.4.1 安装插件

在这里插入图片描述

2.4.2 添加jar包

<!--引入插件lombok 自动的set/get/构造方法插件  -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>	

2.4.3 lombok的背景说明

1)编辑测试类

package com.jt;

import com.jt.pojo.Dept;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest //在执行测试方法时自动的启动Spring容器
class SpringbootDemo1ApplicationTests {

    //当容器启动成功之后,SpringBoot负责将对象进行注入
    @Autowired
    private Dept dept;
    @Test
    void contextLoads() {
        Dept dept = new Dept();
        dept.setId(101);
        dept.setName("Rose");
        System.out.println(dept);
    }

}

问题引入:
上诉测试方法中,set方法重复添加了多次,如果将来对象名发生改变,例如 dept 改为 abc,那么下面所有的dept.setXXX都要更改为abc.setXXX,牵一发动全身,很繁琐,有没有什么办法呢?通过修改set方法的返回值来优化!

2)编辑Dept类

public class Dept {
    //spel表达式
    @Value("${dept.id}")
    private Integer id;
    @Value("${dept.name}")
    private String name;

    public Dept setId(Integer id) {
        this.id = id;
        //返回当前对象
        return this;
    }

    public Dept setName(String name) {
        this.name = name;
        //返回当前对象
        return this;
    }
}

通过这种方式,我们可以发现set方法可以被无限的套用!

3)优化测试类

package com.jt;

import com.jt.pojo.Dept;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest //在执行测试方法时自动的启动Spring容器
class SpringbootDemo1ApplicationTests {

    //当容器启动成功之后,SpringBoot负责将对象进行注入
    @Autowired
    private Dept dept;
    @Test
    void contextLoads() {
        Dept dept = new Dept();
        //链式加载
        dept.setId(101).setName("Rose");
        System.out.println(dept);
    }
}

说明:
我们不难发现,这样写节省了大量的空间,并且如果变量名修改了,我们也只需要修改开头即可,非常简洁!
但是另一个问题是我们又要重写大量的set方法,有没有什么办法呢?
lombok的注解便诞生了!
只需要添加:@Data、@Accessors(chain = true) 开启链式加载即可!

2.4.4 lombok注解使用

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值