【黑马程序员】SpringBoot2学习笔记

1、SpringBoot的前菜

1.1 发展沿革

2013年,Pivotal团队开始研发SpringBoot。

2014年4月,发布全新开源的轻量级框架的第一个SpringBoot版本。

1.2 特点

SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程。针对原始的Spring程序制作的两个方面进行了简化:

  • Spring程序缺点

  • 依赖设置繁琐

  • 以前写Spring程序,使用的技术都要自己一个一个的写,现在不需要了,如果做过原始SpringMVC程序的小伙伴应该知道,写SpringMVC程序,最基础的spring-web和spring-webmvc这两个坐标时必须的,就这还不包含你用json啊等等这些坐标,现在呢?一个坐标搞定面

  • 配置繁琐

  • 以前写配置类或者配置文件,然后用什么东西就要自己写加载bean这些东西,现在呢?什么都没写,照样能用

再来看看前面提出的两个问题,已经有答案了,都简化了,都不用写了,这就是SpringBoot给我们带来的好处。这些简化操作在SpringBoot中有专业的用语,也是SpringBoot程序的核心功能及优点:

  • 起步依赖(简化依赖配置)

  • 依赖配置的书写简化就是靠这个起步依赖达成的

  • 自动配置(简化常用工程相关配置)

  • 配置过于繁琐,使用自动配置就可以做响应的简化,但是内部还是很复杂的,后面具体展开说

  • 辅助功能(内置服务器,……)

  • 除了上面的功能,其实SpringBoot程序还有其他的一些优势,比如我们没有配置Tomcat服务器,但是能正常运行,这是SpringBoot程序的一个可以感知到的功能,也是SpringBoot的辅助功能之一。一个辅助功能都能做的这么6,太牛了

废话不多说开始学习springboot

2、SpringBoot基础篇

基础篇目标上手,能够使用springboot搭建基于springboot的web项目进行开发

  • SpringBoot快速入门

  • SpringBoot基础配置

  • 基于SpringBoot整合SSMP

2.1 快速上手SpringBoot

SpringBoot技术由Pivotal团队研发制作,功能的话简单概括就是加速Spring程序的开发,这个加速要从如下两个方面来说

  • Spring程序初始搭建过程

  • Spring程序的开发过程

通过上面两个方面的定位,我们可以产生两个模糊的概念:

  1. SpringBoot开发团队认为原始的Spring程序初始搭建的时候可能有些繁琐,这个过程是可以简化的,那原始的Spring程序初始搭建过程都包含哪些东西了呢?为什么觉得繁琐呢?最基本的Spring程序至少有一个配置文件或配置类,用来描述Spring的配置信息,莫非这个文件都可以不写?此外现在企业级开发使用Spring大部分情况下是做web开发,如果做web开发的话,还要在加载web环境时加载时加载指定的spring配置,这都是最基本的需求了,不写的话怎么知道加载哪个配置文件/配置类呢?那换了SpringBoot技术以后呢,这些还要写吗?

  1. SpringBoot开发团队认为原始的Spring程序开发的过程也有些繁琐,这个过程仍然可以简化。开发过程无外乎使用什么技术,导入对应的jar包(或坐标)然后将这个技术的核心对象交给Spring容器管理,也就是配置成Spring容器管控的bean就可以了。这都是基本操作啊,难道这些东西SpringBoot也能帮我们简化?

如果对Spring程序的基础开发不太懂的小伙伴,可以去看一下我的ssm学习笔记(更新中!!!其实是拖更中)SSM框架之SSM学习笔记,下面的内容学习需要具备Spring技术的知识,硬着头皮学不下去的。

2.1.1 SpringBoot入门程序制作

由于本人用的idea为2021版所以与课程有些与出入但是大致不差 如果想要博主的idea版本可私信我

下面使用SpringBoot技术快速构建一个SpringMVC的程序,通过这个过程体会简化二字的含义

步骤①:创建新模块,选择Spring Initializr,并配置模块相关基础信息

注意:由于版本不同idea操作略有不同

特别关注:第3步点击Next时,Idea需要联网状态才可以进入到后面那一页,如果不能正常联网,就无法正确到达右面那个设置页了,会一直联网转转转

特别关注:第5步选择java版本和你计算机上安装的JDK版本匹配即可,但是最低要求为JDK8或以上版本,推荐使用8或11

步骤②:选择当前模块需要使用的技术集

关注:此处选择的SpringBoot的版本使用默认的就可以了,需要说一点,SpringBoot的版本升级速度很快,可能昨天创建工程的时候默认版本是2.3.12,今天再创建工程默认版本就变成2.3.5了,差别不大,无需过于纠结,回头可以到配置文件中修改对应的版本

步骤③:开发控制器类

//Rest模式  至于Rest模式后续会有介绍
@RestController
@RequestMapping("/books")
public class BookController {
    @GetMapping
    public String getById(){
        System.out.println("springboot is running...");
        return "springboot is running...";
    }
}

入门案例制作的SpringMVC的控制器基于Rest风格开发,当然此处使用原始格式制作SpringMVC的程序也是没有问题的,上例中的@RestController与@GetMapping注解是基于Restful开发的典型注解

关注:做到这里SpringBoot程序的最基础的开发已经做完了,现在就可以正常的运行Spring程序了。

步骤④:运行自动生成的Application类

访问路径:    http://localhost:8080/books
  • pom.xml

这是maven的配置文件,描述了当前工程构建时相应的配置信息

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
    <!--类似继承父类 继承父工程-->

        <groupId>org.springframework.boot</groupId>
        <!--springboot的核心组件-->
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
    </parent>

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--springboot的web模块-->
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <!--spring的测试模块-->
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
  • Application类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

这个类功能很简单,就一句代码,前面运行程序就是运行的这个类

到这里我们可以大胆推测一下,如果上面这两个文件没有的话,SpringBoot肯定没法玩,看来核心就是这两个文件了。由于是制作第一个SpringBoot程序,先不要关注这两个文件的功能,后面详细讲解内部工作流程。

通过上面的制作,我们不难发现,SpringBoot程序简直太好写了,几乎什么都没写,功能就有了,这也是SpringBoot技术为什么现在这么火的原因,和Spirng程序相比,SpringBoot程序在开发的过程中各个层面均具有优势

类配置文件

Spring

SpringBoot

pom文件中的坐标

手工添加

勾选添加

web3.0配置类

手工制作

Spring/SpringMVC配置类

手工制作

控制器

手工制作

手工制作

一句话总结一下就是能少写就少写能不写就不写,这就是SpringBoot技术给我们带来的好处。

总结

  1. 开发SpringBoot程序可以根据向导进行联网快速制作

  1. SpringBoot程序需要基于JDK8以上版本进行制作

  1. SpringBoot程序中需要使用何种功能通过勾选选择技术,也可以手工添加对应的要使用的技术

  1. 运行SpringBoot程序通过运行Application程序入口进行

2023年2月7日星期二1:03:26  会慢慢更新 加油兄弟们

2.1.2 SpringBoot入门程序制作(二)

由于某些不可抗拒的原因国内进入spring的官方网站会有点慢

这里推荐修改位阿里云的地址 创建程序会快

阿里为了便于自己开发使用,因此在依赖坐标中添加了一些阿里相关的技术,也是为了推广自己的技术吧,所以在依赖选择列表中,你有了更多的选择

阿里云提供的地址更符合国内开发者的使用习惯,里面有一些SpringBoot官网上没有给出的坐标,大家可以好好看一看。

注意:阿里云提供的工程创建地址初始化完毕后和实用SpringBoot官网创建出来的工程略有区别。主要是在配置文件的形式上有区别。

总结

  1. 选择start来源为自定义URL

  1. 输入阿里云start地址

  1. 创建项目

2.1.3 SpringBoot入门程序制作(三)

离线创建springboot

步骤①:创建工程时,选择手工创建Maven工程

步骤②:参照标准SpringBoot工程的pom文件,书写自己的pom文件即可

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
    </parent>

    <groupId>com.itheima</groupId>
    <artifactId>springboot_01_04_quickstart</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>

用什么写什么,不用的都可以不写。当然,现在小伙伴们可能还不知道用什么和不用什么,最简单的就是复制粘贴比如我现在这段话除了这句话都是cv

步骤③:之前运行SpringBoot工程需要一个类,这个缺不了,需要自己手写一个,建议按照之前的目录结构来创建,类名可以自定义但必须要加上@SpringBootApplication注解

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(<Application.class);
    }
}

步骤④:下面就可以自己创建一个Controller测试一下是否能用了,和之前没有差别

温馨提示

如果你的计算机上从来没有创建成功过SpringBoot工程,自然也就没有下载过SpringBoot对应的坐标,那用手写创建的方式在不联网的情况下肯定该是不能用的。所谓手写,其实就是自己写别人帮你生成的东西,但是引用的坐标对应的资源必须保障maven仓库里面有才行,如果没有,还是要去下载的

总结

  1. 创建普通Maven工程

  1. 继承spring-boot-starter-parent

  1. 添加依赖spring-boot-starter-web

  1. 制作引导类Application

2.2 SpringBoot基础配置

这个篇章介绍如何修改默认配置

2.2.1 属性配置

SpringBoot通过配置文件application.properties就可以修改默认的配置,那咱们就先找个简单的配置下手,当前访问tomcat的默认端口是8080,好熟悉的味道,但是不便于书写,我们先改成80,通过这个操作来熟悉一下SpringBoot的配置格式是什么样的

改端口,写port。当你输入port后,神奇的事情就发生了,这玩意儿带提示,太好了

server.port=80

根据提示敲回车,输入80端口,搞定

下面就可以直接运行程序,测试效果了。

我们惊奇的发现SpringBoot这玩意儿狠啊,以前修改端口在哪里改?tomcat服务器的配置文件中改,现在呢?SpringBoot专用的配置文件中改,是不是意味着以后所有的配置都可以写在这一个文件中呢?是的,简化开发者配置的书写位置,集中管理。妙啊,妈妈再也不用担心我找不到配置文件了。

我们得到如下三个信息

  1. SpringBoot程序可以在application.properties文件中进行属性配置

  1. application.properties文件中只要输入要配置的属性关键字就可以根据提示进行设置

  1. SpringBoot将配置信息集中在一个文件中写,不管你是服务器的配置,还是数据库的配置,总之都写在一起,逃离一个项目十几种配置文件格式的尴尬局面

总结

SpringBoot默认配置文件是application.properties

2.2.2 配置文件分类

现在已经能够进行SpringBoot相关的配置了,但是properties格式的配置写起来总是觉得看着不舒服,所以就期望存在一种书写起来更简便的配置格式提供给开发者使用。有吗?还真有,SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。分别如下:

  • properties格式

  • yml格式

  • yaml格式

一看到全新的文件格式,各位小伙伴肯定想,这下又要学习新的语法格式了。怎么说呢?从知识角度来说,要学,从开发角度来说,不用学。为什么呢?因为SpringBoot的配置在Idea工具下有提示啊,跟着提示走就行了。下面列举三种不同文件格式配置相同的属性范例,先了解一下

  • application.properties(properties格式)

server.port=80
  • application.yml(yml格式)

server:
  port: 81
  • application.yaml(yaml格式)

server:
  port: 82

仔细看会发现yml格式和yaml格式除了文件名后缀不一样,格式完全一样,是这样的,yml和yaml文件格式就是一模一样的,只是文件后缀不同,所以可以合并成一种格式来看。以后基本上都是用yml格式的,本课程后面的所有知识都是基于yml格式来制作的,以后在企业开发过程中用这个格式的机会也最多,一定要重点掌握。

总结

SpringBoot提供了3种配置文件的格式

  • properties(传统格式/默认格式)

  • yml(主流格式)

  • yaml

另外配置文件的优先级为properties(最高)> yml > yaml(最低)

不同配置文件中相同配置按照加载优先级相互覆盖,不同配置文件中不同配置全部保留

2.2.3 yaml文件

SpringBoot的配置以后主要使用yml结尾的这种文件格式,并且在书写时可以通过提示的形式加载正确的格式。但是这种文件还是有严格的书写格式要求的。下面就来说一下具体的语法格式。

YAML(YAML Ain't Markup Language),一种数据序列化格式。具有容易阅读、容易与脚本语言交互、以数据为核心,重数据轻格式的特点。常见的文件扩展名有两种:

  • .yml格式(主流)

  • .yaml格式

对于文件自身在书写时,具有严格的语法格式要求,具体如下:

  1. 大小写敏感

  1. 属性层级关系使用多行描述,每行结尾使用冒号结束

  1. 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

  1. 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

  1. #号 表示注释

核心的一条规则要记住,数据前面要加空格与冒号隔开

下面为常见的数据书写格式,熟悉一下

boolean: TRUE                          #TRUE,true,True,FALSE,false,False均可
float: 3.14                            #6.8523015e+5  #支持科学计数法
int: 123                               #0b1010_0111_0100_1010_1110  #支持二进制、八进制、十六进制
null: ~                                #使用~表示null
string: HelloWorld                     #字符串可以直接书写
string2: "Hello World"                 #可以使用双引号包裹特殊字符
date: 2018-02-17                       #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00    #时间和日期之间使用T连接,最后使用+代表时区

此外,yaml格式中也可以表示数组,在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔

subject:
    - Java
    - 前端
    - 大数据
enterprise:
    name: itcast
    age: 16
    subject:
        - Java
        - 前端
        - 大数据
likes: [王者荣耀,刺激战场]            #数组书写缩略格式
users:                             #对象数组格式一
  - name: Tom
       age: 4
  - name: Jerry
    age: 5
users:                             #对象数组格式二
  -  
    name: Tom
    age: 4
  -   
    name: Jerry
    age: 5                
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]    #对象数组缩略格式

总结

  1. yaml语法规则

  • 大小写敏感

  • 属性层级关系使用多行描述,每行结尾使用冒号结束

  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

  • #号 表示注释

  1. 注意属性名冒号后面与数据之间有一个空格

  1. 字面值、对象数据格式、数组数据格式

2.2.4 yaml数据读取

对于yaml文件中的数据,其实你就可以想象成这就是一个小型的数据库,里面保存有若干数据,每个数据都有一个独立的名字,如果你想读取里面的数据,肯定是支持的,下面就介绍3种读取数据的方式

读取单一数据

yaml中保存的单个数据,可以使用Spring中的注解直接读取,使用@Value可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}

记得使用@Value注解时,要将该注入写在某一个指定的Spring管控的bean的属性名上方。现在就可以读取到对应的单一数据行了(就是要把改类加入ioc容器中)

总结

  1. 使用@Value配合SpEL读取单个数据

  1. 如果数据存在多层级,依次书写层级名称即可

读取全部数据

读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫象Environment,使用自动装配注解可以将所有的yaml数据封装到这个对象中

数据封装到了Environment对象中,获取属性时,通过Environment的接口操作进行,具体方法时getProperties(String),参数填写属性名即可

总结

  1. 使用Environment对象封装全部配置信息

  1. 使用@Autowired自动装配数据到Environment对象中

读取对象数据

单一数据读取书写比较繁琐,全数据封装又封装的太厉害了,每次拿数据还要一个一个的getProperties(),总之用起来都不是很舒服。由于Java是一个面向对象的语言,很多情况下,我们会将一组数据封装成一个对象。SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作

首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解@ConfigurationProperties指定该对象加载哪一组yaml中配置的信息。

这个@ConfigurationProperties必须告诉他加载的数据前缀是什么,这样当前前缀下的所有属性就封装到这个对象中。记得数据属性名要与对象的变量名一一对应啊,不然没法封装。其实以后如果你要定义一组数据自己使用,就可以先写一个对象,然后定义好属性,下面到配置中根据这个格式书写即可。

总结

  1. 使用@ConfigurationProperties注解绑定配置信息到封装类中

  1. 封装类需要定义为Spring管理的bean,否则无法进行属性注入

yaml文件中的数据引用

如果在书写yaml数据时,经常出现如下现象,比如很多个文件都具有相同的目录前缀

center:
    dataDir: /usr/local/fire/data
    tmpDir: /usr/local/fire/tmp
    logDir: /usr/local/fire/log
    msgDir: /usr/local/fire/msgDir

或者

center:
    dataDir: D:/usr/local/fire/data
    tmpDir: D:/usr/local/fire/tmp
    logDir: D:/usr/local/fire/log
    msgDir: D:/usr/local/fire/msgDir

这个时候你可以使用引用格式来定义数据,其实就是搞了个变量名,然后引用变量了,格式如下:

baseDir: /usr/local/fire
    center:
    dataDir: ${baseDir}/data
    tmpDir: ${baseDir}/tmp
    logDir: ${baseDir}/log
    msgDir: ${baseDir}/msgDir

还有一个注意事项,在书写字符串时,如果需要使用转义字符,需要将数据字符串使用双引号包裹起来

lesson: "Spring\tboot\nlesson"

 总结

  1. 在配置文件中可以使用${属性名}方式引用属性值

  1. 如果属性中出现特殊字符,可以使用双引号包裹起来作为字符解析

一晚上没睡在更新ssm和springboot 喜欢记得关注一下博主顺便点个赞呗!!!球球了!!

2023.2.8  8:29:40

好的,我可以和你分享一些关于Spring Boot的学习笔记。 1. Spring Boot是什么? Spring Boot是一个基于Spring框架的快速开发框架,它能够帮助开发者快速搭建Spring项目,简化了Spring应用开发的繁琐过程,提高了开发效率。 2. Spring Boot的优点有哪些? Spring Boot的优点有很多,其中包括: - 简化了Spring应用的开发,提高了开发效率; - 集成了很多常用的第三方库,减少了依赖管理的工作; - 自动化配置,减少了配置文件的编写工作; - 内嵌了Tomcat等Web容器,使得应用的部署更加便捷; - 提供了Actuator等模块,使得应用的监控和管理更加便捷。 3. Spring Boot的核心注解有哪些? Spring Boot的核心注解包括: - @SpringBootApplication:标注在启动类上,代表这是一个Spring Boot应用; - @Controller:标注在控制器类上,处理HTTP请求; - @Service:标注在服务类上,用于处理业务逻辑; - @Repository:标注在数据访问类上,用于数据库访问; - @Configuration:标注在配置类上,用于配置Spring应用上下文。 4. Spring Boot的配置文件有哪些? Spring Boot的配置文件包括: - application.properties:基于Key-Value的属性文件; - application.yml:基于YAML语法的配置文件。 5. 如何使用Spring Boot集成数据库? 使用Spring Boot集成数据库需要完成以下几个步骤: - 在pom.xml中添加相关数据库依赖; - 配置数据源和JPA/Hibernate等相关配置; - 编写实体类和DAO层代码。 以上就是一些关于Spring Boot的学习笔记,希望能对你有所帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值