Springboot Starter机制

文章目录

      • 一、简介
      • 二、结合SpringBoot启动原理看容器如何实现自动装配

一、简介

SpringBoot Starter是一组方便的依赖描述符,一个启动器。可以看成一个入口,通过这个入口,整合其他的模块,使得我们开发中不需要到处写配置或者在基础模块中加各种依赖,让配置和依赖的处理变得更简单。

Spring Boot Starter的实现,需要完成两件事:
----引入模块所需的相关jar包
----自动装配模块所需的配置到容器

命名规则
1、通过官网查看,官方提供了44个依赖,官方遵循命名模式:
前缀固定:spring-boot-starter-xxx,其中xxx是特定类型的应用程序,此命名结构目的在需要查找入门时提供帮助。
例如:
spring-boot-starter-web 基于Spring MVC 构建 Web应用容器。使用 Tomcat 作为默认的嵌入式容器
spring-boot-starter-jdbc 数据库连接模块
spring-boot-starter-test 包括 JUnit、Mockito 在内的库测试应用程序

自定义命名
以模块名称开头,后缀固定:xxx-spring-boot-starter
例如:mybatis-spring-boot-starter

Starter机制主要的作用是整合依赖,更方便地注入依赖,自动引入jar包(自动装配)

<?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>

    <groupId>org.example</groupId>
    <artifactId>com.wdy.springboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.lombok.version> 1.18.22</project.lombok.version>
    </properties>

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

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${project.lombok.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot</artifactId>
            <version>2.2.2</version>
        </dependency>
    </dependencies>

</project>

父工程的主要作用
1.properties 的版本在添加具体依赖可以直接使用
2.DependencyManagement 提供了丰富的maven依赖


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

Springboot Starter机制_第1张图片

Springboot Starter机制_第2张图片

子工程
spring-boot-starter-XXX,无需写版本号。直接由父工程继承来

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

二、结合SpringBoot启动原理看容器如何实现自动装配

SpringBoot的启动简单来说是通过注解来表示或者通过配置文件的方式找到需要装配的类,然后通过调用run()方法加载注入bean,此处主看主类的注解@SpringBootApplication,

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

@SpringBootApplication 是一个复合注解,重点包括3个

@EnableAutoConfiguration:实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中。使用@Import的支持,收集和注册依赖包中相关的bean定义

@ComponentScan:扫描指定路径下符合条件的bean,在容器启动过程中,将这些bean加载到容器中,其扫描默认的范围是启动类所在包及其子级包下的文件。

@SpringBootConfiguration:@Configuration标注的类表示是spring容器的配置类

参考添加链接描述

你可能感兴趣的:(spring,boot,java,spring)