考研后SpringBoot复习1

2023-12-30 18:44:15

考研后SpringBoot复习

Hello World入门

复习的版本为SpringBoot2的版本

创建maven项目

在pom文件中导入SpringBoot的依赖同时引入web开发的启动器

<!--声明springboot父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.4.RELEASE</version>
    </parent>

    <dependencies>
        <!--web场景启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

创建SpringBoot的启动器

package com.dzu.boot;

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

/**
 * 主程序类
 * @Author ChenRuXu
 * @Date 2023/12/30 16:22
 * @Version 1.0
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}

springmvc中的控制器

package com.dzu.boot.controller;

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

/**
 * @Author ChenRuXu
 * @Date 2023/12/30 16:28
 * @Version 1.0
 */
@Controller
public class HelloController {

    @ResponseBody
    @RequestMapping("/hello")
    public String helloworld(){
        return "Hello world SpringBoot2";
    }
}

http://localhost:8080/hello(测试返回结果)

配置文件更改

在resource下面新建application.properties全局配置文件
在这里插入图片描述
配置文件的修改可以参考官网文档

引入插件简化部署

<!--打包插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

SpringBoot的两大特性(1)—依赖管理

  • 父项目做依赖管理

在这里插入图片描述
父项目中对版本号进行声明,因此不需要写版本号
称为SpringBoot的版本仲裁机制

在springboot中要使用指定的版本,需要使用就近原则(方式1)

在当前的项目中配置了

<properties>
        <mysql.version>5.1.43</mysql.version>
    </properties>

引入时使用就近修饰使用5.1.43在当期的pom文件中

  • 开发导入stater

1、见到很多 spring-boot-starter-* : *就某种场景
2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
3、SpringBoot所有支持的场景
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
4、见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
5、所有场景启动器最底层的依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <version>2.3.4.RELEASE</version>
  <scope>compile</scope>
</dependency>

通过分析依赖树确定对应的关系

在这里插入图片描述
因此非官方的版本需要自己进行声明更改

SpringBoot的两大特性(2)自动配置

  • 自动配好Tomcat
    • 引入Tomcat依赖。
    • 配置Tomcat
<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>
  • 自动配好SpringMVC
    • 引入SpringMVC全套组件
    • 自动配好SpringMVC常用组件(功能)
  • 自动配好Web常见功能,如:字符编码问题
 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>

启动类中返回的IOC容器分析

编写程序返回指定的容器名字

package com.dzu.boot;

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

/**
 * 主程序类
 * @Author ChenRuXu
 * @Date 2023/12/30 16:22
 * @Version 1.0
 */
@SpringBootApplication
public class MainApplication {
    public static void main(String[] args) {
        ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        //返回所有容器的名字
        String[] beanDefinitionNames = run.getBeanDefinitionNames();
        //遍历输出
        for (String name:beanDefinitionNames){
            System.out.println(name);
        }
    }
}

在这里插入图片描述

图中的容器在ioc容器中存在需要进说明让其生效

包结构相关的说明

  • 默认的包结构
  • 主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来
  • 无需以前的包扫描配置
  • 想要改变扫描路径, @SpringBootApplication(scanBasePackages=“com.atguigu”) 或者@ComponentScan 指定扫描路径

scanBasePackages放大扫描的路径和范围
或者直接使用@ComponentScan注解

配置文件的默认值(修改之前)
  • 各种配置拥有默认值
    • 默认配置最终都是映射到某个类上,如:MultipartProperties(容器中存在
    • 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
  • 按需加载所有自动配置项
    • 非常多的starter
    • 引入了哪些场景这个场景的自动配置才会开启(如引入web场景,器启动器才会生效
    • SpringBoot所有的自动配置功能都在 spring-boot-autoconfigure 包里面

在这里插入图片描述
在这里插入图片描述
映入对应的场景之后自动配置类之后将不再进行标红(从pom文件中引入对应的启动器)
在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_46167190/article/details/135306701
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。