SpringBoot核心@SpringBootApplication使用介绍

目录
  • @SpringBootApplication的使用
    • 1. Spring Boot 的核心
    • 1.2 关闭自动配置
  • @SpringBootApplication及pom讲解
    • @SpringBootApplication 主要有以下注解组成
    • @SpringBootConfiguration
    • @EnableAutoConfiguration 开启自动配置功能
    • Spring启动器
    • SpringBoot 场景启动器

@SpringBootApplication的使用

1. Spring Boot 的核心

1.1. 入口类和 @SpringBootApplication

Spring Boot的项目一般都会有*Application的入口类,入口类中会有main方法,这是一个标准的Java应用程序的入口方法。

@SpringBootApplication注解是Spring Boot的核心注解,它其实是一个组合注解:

该注解主要组合了以下注解:

@SpringBootConfiguration:这是Spring Boot项目的配置注解,这也是一个组合注解:

在Spring Boot项目中推荐使用@ SpringBootConfiguration替代@Configuration

@EnableAutoConfiguration:启用自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置项目的配置项:

如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC

@ComponentScan:默认扫描@SpringBootApplication所在类的同级目录以及它的子目录。

1.2 关闭自动配置

通过上述,我们得知,Spring Boot会根据项目中的jar包依赖,自动做出配置,Spring Boot支持的自动配置如下(非常多):

如果我们不需要Spring Boot自动配置,想关闭某一项的自动配置,该如何设置呢?

比如: 我们不想自动配置 Redis ,想手动配置。

当然了,其他的配置就类似了

@SpringBootApplication及pom讲解

@SpringBootApplication 主要有以下注解组成

@SpringBootConfiguration
@EnableAutoConfiguration

@SpringBootConfiguration

Spring Boot 配置类, 它本质上是@Configuration

@Configuration配置类注解,它本质上是一个组件@Component

@Configuration
public @interface SpringBootConfiguration {
@Component
public @interface Configuration {

@EnableAutoConfiguration 开启自动配置功能

有了这个注解,以前我们需要自己配置的东西,现在都交由spring boot配置

@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

1. @AutoConfigurationPackage

@Import({Registrar.class})
public @interface AutoConfigurationPackage {

在Registrar–>registerBeanDefinitions–>AutoConfigurationPackages.register中,如下图:

获得@SpringBootApplication 标注类的包名,并把该包下的所有组件扫描到spring容器中(在registerBeanDefinition中将对象放到beanDefinition中)

2. @Import({AutoConfigurationImportSelector.class})

Spring Boot启动时从META-INF/spring.factories文件中获取EnableAutoConfiguration所指定的值,将这些值作为自动配置类导入容器中,自动配置类就生效,帮我们进行自动配置工作。

Spring启动器

spring-boot-starter-parent–>依赖于spring-boot-dependencies

Spring 的版本管理中心,我们导入的包默认不需要写版本(如果没在dependencies里管理的需要注明版本)

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.2.2.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>

SpringBoot 场景启动器

SpringBoot将所有的功能场景都抽取出来,做成Starters, 只需要在项目里引入这些starter, 相关依赖都会导进来。要用什么功能就导入什么场景的starter。

<!-- spring boot帮我们导入web模块正常运行所依赖的组件: jason, spring-webmvc, spring-web等-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 关于@SpringBootApplication与@SpringBootTest的区别及用法

    目录 @SpringBootApplication与@SpringBootTest区别用法 1 @SpringBootApplication 注解的应用 2 @SpringBootTest 注解的应用 3 @SpringBootApplication 和 @SpringBootTest 的区别 4 @ComponentScan(包含了两个filter) 解析 5 @EnableAutoConfiguration 注解解析 6 @…Test 注解 SpringBootTest对比SpringBoo

  • SpringBoot启动类@SpringBootApplication注解背后的秘密

    在用SpringBoot的项目的时候,会发现不管干什么都离不开启动类,他是程序唯一的入口,那么他究竟为我们做了什么?本篇文章主要解析@SpringBootApplication. 一.启动类 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class,args); } } 二.@SpringBoo

  • SpringBoot入口类和@SpringBootApplication讲解

    目录 入口类和@SpringBootApplication @ComponentScan相关使用 @EnableAutoConfiguration 关闭自动配置 为什么是SpringBoot SpringBoot主程序类,主入口类 主程序类,主入口类 入口类和@SpringBootApplication SpringBoot项目创建完成之后默认会生成一个*Application的入口类,通过该类的main方法即可启动SpringBoot项目. @SpringBootApplication(exc

  • @SpringBootApplication注解的使用

    一.前言 大部分的配置都可以用Java类+注解来代替,而在SpringBoot项目中见的最多的莫过于@SpringBootApplication注解了,它在每个SpringBoot的启动类上都有标注. 这个注解对SpringBoot的启动和自动配置到底有什么样的影响呢?本文将为各位大佬解析它的源码,揭开@SpringBootApplication注解神秘的面纱. 二.正文 对SpringBoot工程的自动配置很感兴趣,于是学习其源码并整理了其中一些内容,如果有错误请大家指正~话不多说,直接上源码

  • SpringBoot核心@SpringBootApplication使用介绍

    目录 @SpringBootApplication的使用 1. Spring Boot 的核心 1.2 关闭自动配置 @SpringBootApplication及pom讲解 @SpringBootApplication 主要有以下注解组成 @SpringBootConfiguration @EnableAutoConfiguration 开启自动配置功能 Spring启动器 SpringBoot 场景启动器 @SpringBootApplication的使用 1. Spring Boot 的核

  • 基于SpringBoot核心原理(自动配置、事件驱动、Condition)

    前言 SpringBoot是Spring的包装,通过自动配置使得SpringBoot可以做到开箱即用,上手成本非常低,但是学习其实现原理的成本大大增加,需要先了解熟悉Spring原理.如果还不清楚Spring原理的,可以先查看博主之前的文章,本篇主要分析SpringBoot的启动.自动配置.Condition.事件驱动原理. 正文 启动原理 SpringBoot启动非常简单,因其内置了Tomcat,所以只需要通过下面几种方式启动即可: @SpringBootApplication(scanBas

  • SpringBoot日志配置简单介绍

    1.在application.properties文件中加入logging.level.root=debug 全部日志级别设置为debug:这里的root是包的级别,root表示所有的包用同一个日志级别:如果把等号后面设置为off表示关闭日志: 2.logging.file=/data/tpmslogs/tpms.log,指定日志文件的路径和名称: 3.logging.pattern.console= 设置控制台输出的日志格式 4.logging.file.console= 设置文件输出的日志格

  • springboot maven 打包插件介绍及注意事项说明

    目录 springboot maven 打包插件介绍及注意事项 1. springboot项目默认生成的可执行jar,为什么不能作为依赖导入其他项目? 2. 有木有办法可以一次性获得可执行jar和依赖jar呢? springboot打包插件详解(spring-boot-maven-plugin) 引入配置 新增后可以看Maven工具栏中有Plugins部分 看一下SpringBoot父工程的pom.xml中打包插件的配置 这个值可以通过设置属性layout来控制 具体layout值对应Main-

  • 深入了解Springboot核心知识点之数据访问配置

    目录 自定义数据源配置 多数据源配置 使用Spring Data Repositories 将@Entity定义与Spring配置分开 配置JPA属性 配置Hibernate命名策略 配置Hibernat二级缓存 使用多个EntityManagerFactories 将Spring数据存储库公开为REST端点 环境:Springboot2.4.13 自定义数据源配置 @Bean @ConfigurationProperties(prefix="app.datasource") publ

  • React组件封装中三大核心属性详细介绍

    目录 1.介绍 2.state 概念 演示 3.props 概念 props与state区别 4.refs 概念 refs种类 5.父子组件 什么是父子组件 父子组件之间传值 1.介绍 React组件中默认封装了很多属性,有的是提供给开发者操作的,其中有三个属性非常重要:state.props.refs. 2.state 概念 state是类组件的一个默认属性,用于标识类组件的状态,负责更新UI,让页面动态变化,当state变化时,组件将被重新渲染. 函数组件没有对象属性(babel默认开启了局

  • go语言Pflag Viper Cobra 核心功能使用介绍

    目录 1.如何构建应用框架 2.命令行参数解析工具:Pflag 2.1 Pflag 包 Flag 定义 2.2 Pflag 包 FlagSet 定义 2.3 Pflag 使用方法 3.配置解析神器:Viper 3.1读入配置 3.2 读取配置 4.现代化的命令行框架:Cobra 4.1 使用 Cobra 库创建命令 4.2使用标志 5.总结 1.如何构建应用框架 一般来说构建应用框架包含3个部分: 命令行参数解析 配置文件解析 应用的命令行框架:需要具备 Help 功能.需要能够解析命令行参数和

  • SpringBoot配置文件格式详细介绍

    目录 一.application.properties配置文件 二.yml和yaml配置文件 配置格式 (1)普通属性 (2)数组属性 (3)注意事项 idea添加配置文件 三.生效优先级 一.application.properties配置文件 SpringBoot 项目最初 resources 下会有一个 application.properties 文件,格式和普通的 properties 文件一样,使用 属性名=属性值 进行配置 如下例,设置服务器端口号和日志等级: # 端口设为 80

  • prometheus监控springboot应用简单使用介绍详解

    对于springboot应用,需要以下几个步骤 springboot应用开启endpoint,添加actuator的以来和promethus的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> &

  • Springboot Cucumber测试配置介绍详解

    目前Spring-boot成为了java开发的主流框架,Cucumber作为一款支持dsl的自动化测试工具,很适合用户编写DSL优化过的单元测试等测试用例.本文将讲解如何在SpringBoot中配置Cucumber进行自动化测试. 目录结构如下: gradle相关配置如下所示: testCompile('org.springframework.boot:spring-boot-starter-test', "info.cukes:cucumber-jvm:1.1.8", "i

随机推荐