SpringBoot

SpringBoot

SpringBoot 帮我们简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是Spring),大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术!

SpringBoot的主要目标是:

  • 为所有 Spring 开发提供更快速、可广泛访问的入门体验。
  • 开箱即用,设置合理的默认值,但是也可以根据需求进行适当的调整。
  • 提供一系列大型项目通用的非功能性程序(如嵌入式服务器、安全性、指标、运行检查等)。
  • 约定大于配置,基本不需要主动编写配置类、也不需要 XML 配置文件。

总结:简化开发,简化配置,简化整合,简化部署,简化监控,简化运维。


父工程

在SSM的学习中,我们都是新建一个工程作为父工程,做依赖的统一管理

而在Springboot中,要将我们创建好的工程直接设置为springboot的子工程(认boot作父)

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.1</version>
</parent>
  • 每个boot项目都有一个父项目spring-boot-starter-parent
  • parent的父项目是spring-boot-dependencies
  • 父项目 版本仲裁中心,把所有常见的jar的依赖版本都声明好了

启动器(Strater)

Spring Boot提供了一种叫做Starter的概念,它是一组预定义的依赖项集合,旨在简化Spring应用程序的配置和构建过程

Starter包含了一组相关的依赖项,以便在启动应用程序时自动引入所需的库、配置和功能

  • 简化依赖管理

  • 自动配置

  • 提供约定优于配置

  • 快速启动和开发应用程序

  • 模块化和可扩展性

Spring Boot提供了许多预定义的Starter,例如spring-boot-starter-web用于构建Web应用程序,spring-boot-starter-data-jpa用于使用JPA进行数据库访问,spring-boot-starter-security用于安全认证和授权等等

Spring启动器列表;来自Spring官网


命名规范:
  • 官方提供的场景:命名为:spring-boot-starter-*
  • 第三方提供场景:命名为:*-spring-boot-starter

spring-boot-starter-web

添加web整合依赖,包括但不限于:

  • Spring-webmvc
  • servlet
  • jackson
  • ……

注:因为父工程的版本控制,所以这个依赖也不需要写版本号

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

启动类(@SpringBootApplication)

@SpringBootApplication注解修饰的类即为启动类,我们先来研究一下注解内容

……
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
……
  • @SpringBootConfiguration继承自@Configuration注解,它标识这这个类是一个配置类
  • @EnableAutoConfiguration:自动加载其他的配置类
  • @ComponentScan:扫描包,默认是扫描当前类所在的包及其子包的注解

SpringApplication.run

调用SpringApplication.run方法,将启动类本身的类对象和主方法参数作为参数传递

  • 创建IoC容器,加载配置
  • 启动内置的Web服务器(Tomcat)
package com.xiaobai;

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

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args); // 自动创建IoC容器,启动tomcat软件
    }
}

@Bean

因为启动类本身就是一个配置类,所以我们可以直接创建方法用@Bean修饰,手动注入组件或工厂Bean到IoC容器中

package com.xiaobai;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args); // 自动创建IoC容器,启动tomcat软件
    }
    @Bean
    public Object object(){
        return new Object();
    }
}