SpringBoot

目录

1.SpringBoot入门程序开发

2.步骤

3.隐藏文件或文件夹

4.Parent(父母)

5.starter

6.引导类

7.内嵌tomcat

8.REST(springMVC)

9.基础配置

  9.1属性配置    

  9.2配置文件分类

  9.3yaml文件

   9.4yaml数据读取

10.整合第三方技术

        10.1整合JUnit     

        10.2整合MyBatis

         10.3整合MyBatis-Plus   

         10.4整合Druid

11.Lombok

12.打包与运行

13.多环境开发

14.日志

14.1日志基础

14.2日志输出格式控制

14.3日志文件

15.热部署

16.配置高级

        16.1@ConfigurationProperties

        16.2宽松绑定/松散绑定

        16.3常用计量单位绑定

        16.4数据校验

17.测试

        17.1加载测试专用属性

        17.2加载测试专用配置

        17.3Web环境模拟测试

18.数据层解决方案

19.整合第三方技术

20.监控

21.自动配置

        12.1bean加载方式(复习)

        12.2bean加载控制(复习)

        21.3bean依赖属性配置

        21.4自动配置原理

        21.5变更自动配置

22.自定义starter

23.SpringBoot启动流程


工具:idea2019,jdk8

技术学习必要性
        1.市场占有率很高
        2.非常重要 (https://spring.io)
        3.Java开发者写程序必备技能,没有之一

1.SpringBoot入门程序开发


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

                Spring程序缺点
                        1.依赖设置繁琐
                        2.配置繁琐

      比如:我们需要手动去配置大量的参数,没有默认值,需要我们管理大量的jar包和它们的依赖

                SpringBoot程序优点
                         1.起步依赖(简化依赖配置)
                         2.自动配置(简化常用工程相关配置)

                         3.辅助功能(内置服务器,.....)

2.步骤

        SpringBoot入门程序
              2. 1 创建新模块,选择Spring Initalizr,并配置模块相关基础信息

         2.2选择当前模块需要使用的技术集 

       2. 3.SpringBoot的版本号

      2.4.开发控制器类

 

package com.ssm.demo.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/index")
public class HelloSpringboot {
    @GetMapping
    public String getById(){
        System.out.println("springboot is running");
        return "springboot is running";
    }
}

*最简SpringBoot程序所包含的基础文件
      pom,xml文件
     Application类

 pom.xml

<?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>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.ssm</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>


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

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.4.1</version>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
        <dependency>
            <groupId>com.spring4all</groupId>
            <artifactId>spring-boot-starter-swagger</artifactId>
            <version>1.5.1.RELEASE</version>
        </dependency>
    </dependencies>


    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <excludes>
            <exclude>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclude>
        </excludes>
    </configuration>
    </plugin>
    </plugins>
    </build>


</project>

*Spring程序与SpringBoot程序对比

1.没网时连接springboot

2.阿里云连接springboot

 http://start.Laliyun.com  下面同上

3.隐藏文件或文件夹

        Idea中隐藏指定文件或指定类型文件
                Setting ->File Types ->Ignored Files and Folders

                 输入要隐藏的文件名,支持*号通配符
                回车确认添加 

                

4.Parent(父母)

                1.开发SpringBoot程序要继承spring-boot-starter-parent

                2.spring-boot-starter-parent中定义了若干个依赖管理

                3.继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突

                4.继承parent的形式也可以采用引入依赖的形式实现效果

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

                *不同的版本(version),区别在于依赖的版本也不同(1.ctrl+alt+点进入2.ctrl+b)

5.starter

          *parent但仅定义未使用

                starter:SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

        *parent
                *所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的

                        spring-boot-starter-parent各版本间存在着诸多坐标版本不同

        @实际开发
                @使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供,除非SpringBoot未提供对应版本

                @如发生坐标错误,再指定Version (要小心版本冲突)

6.引导类

        1.SpringBoot工程提供引导类用来启动程序

        2.SpringBoot工程启动后创建并初始化Spring容器

package com.ssm.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

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

}
        *SpringApplication.run(DemoApplication.class, args);是一个spring容器
        *SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目
        *SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

7.内嵌tomcat

        *辅助功能

*使用maven依赖管理变更起步依赖项

内置服务器

        *tomcat                  粉丝多,应用面广,负载了若干较重的组件

        *jetty                       更轻量级,负载性能远不及tomcat

        *undertow              undertow,负载性能勉强跑赢tomcat

8.REST(springMVC)

       

9.基础配置

        9.1属性配置

                


       

 9.2配置文件分类

yml(主流)


  

     9.3yaml文件

yaml书写的时候没有提示,把它修改成配置文件


        9.4yaml数据读取

        

package com.xj;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * @Author:豆浆
 * @name :MyDataSource
 * @Date:2024/3/14 11:15
 */
//1.定义数据模型封装yaml文件中的数据
//2.定义为spring 管控的Bean
    @Component
//3.指定加载的数据
    @ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
    private String driver;
    private String url;
    private String username;
    private String password;


    @Override
    public String toString() {
        return "MyDataSource{" +
                "driver='" + driver + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        this.driver = driver;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

10.整合第三方技术

        10.1整合JUnit


       

        10.2整合MyBatis


       

         10.3整合MyBatis-Plus


        

10.4整合Druid

        

        

11.Lombok

12.打包与运行

         

        

13.多环境开发

       

       

交换时自有点:compile生效

14.日志


14.1日志基础

日志(log)作用

  1.      编程期调试代码
  2.     运营期记录信息
  •                         记录日常运营重要信息(峰值流量、平均应时长……)
  •                         记录应用报错信息(错误堆栈)
  •                         记录运维过程数据(扩容、宕机、报警……)

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>


14.2日志输出格式控制


14.3日志文件

15.热部署

1.开启开发者工具

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


2.激活热部署:Ctr1 +F9

自动热部署

1.

2.ctrl+alt+shift+/

五秒后自动热部署

16.配置高级

        16.1@ConfigurationProperties

        16.2宽松绑定/松散绑定


        16.3常用计量单位绑定


        16.4数据校验

                        开启数据校验有助于系统安全性,J2EE规范中JSR383规范定义了一组有关数据校验相关的API

       
       <!--1.导入JSR303规范--> 
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
        </dependency>
        <!--使用hibernate框架提供的校验器做实现类-->
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
        </dependency>

17.测试

        17.1加载测试专用属性

                        加载测试临时属性应用于小范围测试环境 :


        17.2加载测试专用配置

                加载测试范围配置应用于小范围测试环境


        17.3Web环境模拟测试

18.数据层解决方案

  

       数据源:

内置持久化解决方案--JdbcTemplate:

 加上:

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

 去除:

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>

 数据库:

19.整合第三方技术

20.监控

springboot原理篇: 

21.自动配置

        12.1bean加载方式(复习)

                        第一,二是spring的方式

           第一:

        第二:

@controller,@service,@repository

第三方的Bean

        第三:

相等于

 

FactoryBean

在老项目(xml)下+新项目(注解)

@Configration与@componentScan的区别

第四:

配置类就是里面加载了bean

第五:

第六:

第七:

第八:


        12.2bean加载控制(复习)

编程式:

使用@Conditional注解的派生注解设置各种组合条件控制bean的加载(springboot提供)


        21.3bean依赖属性配置


        21.4自动配置原理


        21.5变更自动配置

22.自定义starter

教你如何实现自定义SpringBootStarter_springboot自定义starter-CSDN博客

超简单 定义一个自己的starter_自定义starter-CSDN博客

23.SpringBoot启动流程

9千字长文带你了解SpringBoot启动过程--史上最详细 SpringBoot启动流程-图文并茂-CSDN博客

Springboot启动流程_springboot的启动流程-CSDN博客

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

豆浆-plus

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

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

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

打赏作者

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

抵扣说明:

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

余额充值