Qouson's blog Qouson's blog
首页
  • Java 基础

    • 基础
    • String
  • Java 中级

    • 网络编程
  • Java 高级

    • JVM
    • 多线程
  • Spring
  • SpringMVC
  • SpringBoot
  • MySQL
  • Redis
  • MQ
  • ZooKeeper
  • git
  • linux
  • 设计模式
  • 数据结构与算法
  • 计算机基础
  • Java相关框架
  • 分布式
  • DDD领域驱动设计
  • 系统设计
  • 杂乱无章
Java知识图谱
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

qouson

Java界的小学生
首页
  • Java 基础

    • 基础
    • String
  • Java 中级

    • 网络编程
  • Java 高级

    • JVM
    • 多线程
  • Spring
  • SpringMVC
  • SpringBoot
  • MySQL
  • Redis
  • MQ
  • ZooKeeper
  • git
  • linux
  • 设计模式
  • 数据结构与算法
  • 计算机基础
  • Java相关框架
  • 分布式
  • DDD领域驱动设计
  • 系统设计
  • 杂乱无章
Java知识图谱
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Spring

  • SpringMVC

  • SpringBoot

    • SpringBoot
      • SpringBoot简介
      • SpringBoot优点
      • SpringBoot自动配置原理
        • @SpringBootConfiguration
        • @EnableAutoConfiguration
        • @ComponentScan
      • 怎么自定义一个SpringBoot Starter
      • Spring Boot启动流程
  • SpringCloud

  • Spring
  • SpringBoot
qouson
2024-06-01
目录

SpringBoot

# SpringBoot

# SpringBoot简介

SpringBoot是Spring家族中的一个子项目,也是Spring的一员。用于简化Spring应用的初始搭建以及开发过程。提供了一套默认的配置,约定优于配置。帮助开发者快速搭建Spring应用,极大提高了开发效率,再也不用为配置文件编写大量的XML配置了。

# SpringBoot优点

  1. 通过官方Spring Initalizr快速创建SpringBoot应用,只需要选择需要的模块,无需手动创建项目。
  2. SpringBoot内嵌了Tomcat,Jetty,Undertow等容器,可以不用再为项目部署配置Tomcat服务器。直接运行jar包即可。
  3. SpringBoot提供了自动配置功能可以自动配置Spring应用;提供了一系列的Starter,可以快速集成框架。
  4. SpringBoot允许通过yaml管理配置,比properties配置更加简洁。
  5. SpringBoot提供了一系列的Actuator,可以帮助开发者监控SpringBoot应用,比如健康检查,审计,统计。
  6. 配合SpringCloud,可以快速搭建分布式系统。

# SpringBoot自动配置原理

在Spring中,自动装配是指容器利用反射,根据Bean的依赖关系,自动将Bean装配到相应的属性中。

在SpringBoot中,通过@EnableAutoConfiguration注解,开启自动配置功能。 为了进一步简化,SpringBoot提供了一个注解@SpringBootApplication。这个注解包含@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解。

# @SpringBootConfiguration

表示当前类是一个配置类,相当于一个xml文件。 由@Configuration注解修饰。

# @EnableAutoConfiguration

开启自动配置功能。 它是一个组合注解,包含@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector .class)。

AutoConfigurationImportSelector.class是SpringBoot自动配置的核心。

它实现了ImportSelector接口,该接口的selectImports方法返回一个字符串数组。 实际调用getAutoConfigurationEntry方法,返回一个AutoConfigurationEntry。 读取META-INF/spring.factories文件,获取所有自动配置类。

# @ComponentScan

扫描当前类所在的包及其子包下的所有组件。

# 怎么自定义一个SpringBoot Starter

  1. 创建Maven项目,添加依赖。
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
  1. 创建一个配置属性类
@ConfigurationProperties(prefix = "mystarter")
public class MyStarterProperties {
    private String message = "这个一个配置属性类";

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
  1. 创建自动配置类,在src/main/java
@Configuration
@EnableConfigurationProperties(MyStarterProperties.class)
public class MyServiceAutoConfiguration {

    @Bean
    @ConditionalOnMissingBean
    public MyService myService(MyStarterProperties properties) {
        return new MyService(properties.getMessage());
    }
}

1
2
3
4
5
6
7
8
9
10
11
  1. 创建简单的服务类
public class MyService {
    private final String message;

    public MyService(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}
1
2
3
4
5
6
7
8
9
10
11
  1. 配置 spring.factories,在 src/main/resources/MATE-INF 创建spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.qouson.mystarter.autoconfigure.MyServiceAutoConfiguration
1
2
  1. mvn clean install打包,发布到本地仓库。
  2. 创建新的SpringBoot项目,导入依赖
  3. 配置application.yml,测试

# Spring Boot启动流程

编辑 (opens new window)
上次更新: 2024/06/01, 23:33:02
springMVC
SpringCloud

← springMVC SpringCloud→

最近更新
01
杂乱无章
12-25
02
基础-大彬
11-14
03
集合-大彬
11-14
更多文章>
Theme by Vdoing | Copyright © 2023-2025 qouson
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式