SpringBoot笔记总结

目录

一:SpringBoot简介

二:SpringBoot入门案例开发步骤

三:SpringBoot与Spring框架对比

四:SpringBoot程序中需要关注的点

        1.pom.xml文件中的标签

         2.starter起步依赖

        3.引导类

       4.变更起步依赖使用Jetty服务器替代Tomcat

五:SpringBoot配置文件

        1.配置文件格式

         2.配置文件加载顺序

         3.yaml格式

        4.多环境开发配置

          1.配置多个环境

           2.项目打成jar包后通过命令行启动时,可以通过设置临时参数来更改配置

           3.Maven与SpringBoot多环境配置冲突的解决方案

           4.SpringBoot中的配置文件级别


一:SpringBoot简介

      SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建开发过程

       具体怎么简化的,看完SpringBoot入门案例你就明白了

二:SpringBoot入门案例开发步骤

        1.创建新模块,选择Spring初始化,并配置相关基础信息        

        2.选择SpringBoot版本(尽量选低版本)以及当前模块需要使用的依赖

        (可以选择很多依赖,根据你们项目需要的技术进行选择即可,入门案例这里为了最简开发只勾选了Spring Web依赖)

        3.删除工程不需要的目录

           4.在pom.xml文件中的web起步依赖环境中排除tomcat起步依赖,并添加jetty起步依赖


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--web起步依赖环境中排除tomcat起步依赖-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--添加jetty依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

            5. 编写控制器类

@RestController
@RequestMapping("/books")
public class BookController {
    @GetMapping("/{id}")
    public String getById(@PathVariable Integer id){
        System.out.println("id=>"+id);
        return "{'message':'hello,springboot'}";
    }
}

        6.运行自动生成的Application引导类 

         好啦,到这一步,SpringBoot入门案例就编写完成了

        要测试的话浏览器输入下面路径即可:http://localhost:8080/books/1

三:SpringBoot与Spring框架对比

       使用Spring开发SpringMVC程序需要引入SpringMVC和Servlet依赖,需要编写ServletConfig和SpringMvcConfig配置类,再需要编写控制器类

        使用SpringBoot开发SpringMVC程序需要选择Spring Web依赖,不再需要编写ServletConfig和SpringMvcConfig配置类,最后编写控制器类即可

        如果看完上述文字描述,你还不清楚的下面图片的对比,你会更加直观地感受到SpringBoot是如何简化Spring应用的初始搭建开发过程的

         Spring程序缺点:配置繁琐,依赖设置繁琐

         SpringBoot程序优点:不用编写配置了,使用starter起步依赖大大简化了依赖的配置,还具有一些辅助功能(如内置服务器等)

四:SpringBoot程序中需要关注的点

        1.pom.xml文件中的<parent></parent>标签

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

        spring-boot-starter-parent项目是所有SpringBoot项目都要继承的项目,该项目继承spring-boot-dependencies项目,这个项目用来做统一的版本控制 ,以达到减少依赖冲突的目的

         2.starter起步依赖

              sping-boot-...-starter是SpringBoot常见项目名称,定义了当前项目使用所需要的所有项目依赖,

            比如:spring-boot-starter-web项目中就定义了需要的依赖(springboot, json, tomcat, spring-web, spring-webmvc)

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <version>2.7.14</version>
  <name>spring-boot-starter-web</name>
  <description>Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container</description>
  <url>https://spring.io/projects/spring-boot</url>
  <!--中间部分内容省略,重点看集成了哪些需要的依赖-->
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.7.14</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
      <version>2.7.14</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.7.14</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.3.29</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.3.29</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

         3.引导类

        有@SpringBootAppliacation注解标识的就是引导类,引导类无需自己创建

        SpringBoot在创建项目的时候,采用的是jar的打包方式

        SpringBoot的引导类是项目的入口,运行main方法就可以启动项目

  4.变更起步依赖使用Jetty服务器替代Tomcat

      原因是Jetty比Tomcat更轻量级,可拓展性更强 

      没有更改的spring-boot-starter-web依赖如下

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

        更改后的spring-boot-starter-web依赖如下


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!--web起步依赖环境中排除tomcat起步依赖-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--添加jetty依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jetty</artifactId>
        </dependency>

五:SpringBoot配置文件

        1.配置文件格式

             SpringBoot常见的配置文件的形式有3种:

                1.application.properties

server.port=80

                2.application.yml

server:
   port:81

                3.application.yaml

server:
   port:82

         2.配置文件加载顺序

                     application.properties  >  application.yml  >  application.yaml

          3.yaml格式

                   YAML(YAML Ain't Markup Language),一种数据序列化格式

                   YAML参考了其他多种语言,包括:C语言PythonPerl,并从XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans在2001年首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。

                  YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一个标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

                    YAML格式的优点:

                                                1.容易阅读

                                                 2.容易与脚本语言交互

                                                 3.以数据为核心,重数据轻格式

                     YAML文件的拓展名:

                                                1. .yml(主流)

                                                 2.  .yaml

                      YAML语法规则:

                                                1.大小写敏感

                                                2.缩进表示层级关系,同层级左侧对齐,只允许使用空格

                                                3.属性名与属性值之间使用冒号+空格作为分隔

                                                4.#表示注释

                                                5.yaml数组数据在属性名的下方使用减号作为数组开始符号,每行书写一个数据,减号与数据间空格分隔

                                                Eg:

                    读取YAML数据的三种方式:

                        --1使用@Value注解直接读取入单个数据,属性名引用方式:${一级属性名.二级属性名……}                       

                   --2封装全部数据到Environment对象后读取数据

                  --3自定义对象封装指定数据后读取(常用)

@ConfigurationProperties(prefix="enterprise")
public class Enterprise {
    private String name;
    private Integer age;
    private String tel;
    private String[] subject;
    //自行添加getter、setter、toString()等方法
}
@RestController
@RequestMapping("/books")
public class BookController{
    @Autowired
    private Enterprise enterprise;
}

                    自定义对象封装数据警告解决方案

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

        4.多环境开发配置

             在实际开发中,项目的开发环境(dev), 测试环境(test), 生产环境(pro)的配置信息并不一致,所以需要配置多个环境, 也需要进行快速切换不同的环境配置

             1.配置多个环境

              使用yml文件配置多环境    ->更推荐使用这种方式

              在resourcs目录下的application.yml中编写如下内容即可配置多个环境以及快速切换多个环境

#设置启用哪个环境
spring:
  profiles:
    active: dev
---
#开发环境配置
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 80
---
#生产环境配置
spring:
  config:
    activate:
      on-profile: pro
server:
  port: 81
---
#测试环境配置
spring:
  config:
    activate:
      on-profile: test
server:
  port: 82
---

              使用porperties文件配置多环境   

                需要在rsources目录下新建一个目录bak来存放四个properties文件

                四个properties文件分别是: 

   application.properties(主配置文件)                    application-dev.properities(分类配置文件)     application-pro.properities(分类配置文件)         application-test.properities(分类配置文件) 

              配置文件配置内容如下:

#主启动配置文件 application.properties
spring.profiles.active=pro

#生产环境分类配置文件 application-pro.properties
server.port=80

#开发环境分类配置文件 application-dev.properties
server.port=81             

#测试环境分类配置文件application-test.properties
server.port=82

          2.项目打成jar包后通过命令行启动时,可以通过设置临时参数来更改配置

java –jar springboot.jar --spring.profiles.active=test                                      更改为测试环境
java –jar springboot.jar --server.port=88                                                        临时更改端口
java –jar springboot.jar --server.port=88 --spring.profiles.active=test

           注意:参数记载有不同的优先级,详情参看官方文档(https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html ) 

                 SpringBoot允许外部的配置,以便可以在不同的环境下使用相同的应用程序代码. 有许多的外部配置源, 比如Java properties文件,YAML文件, 环境变量和命令行参数

                SpringBoot有一个特殊的PropertySource顺序,是为了进行合理的值重写. 后设置的属性源可以覆盖之前的属性源中定义的值.属性源的排列顺序如下(按照优先级从低往高排列)               

       3.Maven与SpringBoot多环境配置冲突的解决方案

           我们知道Maven中可以配置多环境,SpringBoot中也可以配置多环境,如果两者都配置了多环境,以Maven中的配置为主

            Mave兼容SpringBoot的步骤(多环境配置):

             -1-Maven中设置多环境属性

<profiles>
    <profile>
        <id>dev_env</id>
        <properties>
            <profile.active>dev</profile.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>pro_env</id>
        <properties>
            <profile.active>pro</profile.active>
        </properties>
    </profile>
    <profile>
        <id>test_env</id>
        <properties>
            <profile.active>test</profile.active>
        </properties>
    </profile>
</profiles>

          -2-SpringBoot中的application.yml引用Maven属性

#设置启用的环境
spring:
  profiles:
    active: ${profile.active}

---
#开发
spring:
  profiles: dev
server:
  port: 80
---
#生产
spring:
  profiles: pro
server:
  port: 81
---
#测试
spring:
  profiles: test
server:
  port: 82
---

         -3-添加插件对资源文件开启对默认占位符的解析

              Maven打包指令执行完毕后,生成了对应的包,其中类参与编译,但是配置文件并没有编译,而是复制到包中,所以我们需要对资源文件开启对默认占位符的解析

<build>
    <plugins>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <configuration>
                <encoding>utf-8</encoding>
                <useDefaultDelimiters>true</useDefaultDelimiters>
            </configuration>
        </plugin>
    </plugins>
</build>

        到这里,Maven与SpringBoot多环境兼容就完成了~ 

       4.SpringBoot中的配置文件级别

             -1-IDEA中编写的类路径下的的application.yml                                     (优先级最低)

             -2-IDEA中编写的类路径下的config包下的application.yml

             -3-程序打包以后所在文件路径里的application.yml

             -4- 程序打包以后所在文件路径里的config包下的application.yml          (优先级最高)        

                  1级与2级用于系统开发阶段设置通用属性

                  3级与4级留做系统打包后设置通用属性

          

 

                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值