SpringBoot核心@SpringBootApplication使用介绍

 更新时间:2022年03月21日 10:58:25   作者:盲目的拾荒者  
这篇文章主要介绍了SpringBoot核心@SpringBootApplication的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

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

相关文章

  • mybatis中使用InsertProvider注解报错解决全过程

    mybatis中使用InsertProvider注解报错解决全过程

    这篇文章主要介绍了mybatis中使用InsertProvider注解报错解决全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 详解Java多线程编程中线程的启动、中断或终止操作

    详解Java多线程编程中线程的启动、中断或终止操作

    在Java中start和tun方法可用被用来启动线程,而用interrupt方法来中断或终止线程,以下我们就来详解Java多线程编程中线程的启动、中断或终止操作
    2016-07-07
  • java 伪造http请求ip地址的方法

    java 伪造http请求ip地址的方法

    这篇文章主要介绍了java 伪造http请求ip地址的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 从内存模型中了解Java final的全部细节

    从内存模型中了解Java final的全部细节

    关于final关键字,它也是我们一个经常用的关键字,可以修饰在类上、或者修饰在变量、方法上,以此看来定义它的一些不可变性!像我们经常使用的String类中,它便是final来修饰的类,并且它的字符数组也是被final所修饰的。但是一些final的一些细节你真的了解过吗
    2022-03-03
  • Java Map 按key排序和按Value排序的实现方法

    Java Map 按key排序和按Value排序的实现方法

    下面小编就为大家带来一篇Java Map 按key排序和按Value排序的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 基于Spring开发之自定义标签及其解析

    基于Spring开发之自定义标签及其解析

    Spring框架是现在Java最流行的开源框架之一,需要实现一些自定义的标签,主要是方便使用我们框架的人能够快速、简单进行配置,有兴趣的可以了解一下。
    2017-04-04
  • springboot结合mybatis-plus快速生成项目模板的方法

    springboot结合mybatis-plus快速生成项目模板的方法

    Mybatis-Plus是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生,接下来通过本文给大家分享springboot结合mybatis-plus快速生成项目模板的方法,感兴趣的朋友一起看看吧
    2021-06-06
  • Eclipse导入项目报错问题解决方案

    Eclipse导入项目报错问题解决方案

    这篇文章主要介绍了Eclipse导入项目报错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot单元测试框架Mockito介绍及使用

    SpringBoot单元测试框架Mockito介绍及使用

    与集成测试将系统作为一个整体测试不同,单元测试更应该专注于某个类。所以当被测试类与外部类有依赖的时候,尤其是与数据库相关的这种费时且有状态的类,很难做单元测试。但好在可以通过“Mockito”这种仿真框架来模拟这些比较费时的类,从而专注于测试某个类内部的逻辑
    2023-01-01
  • Spring Security permitAll()不允许匿名访问的操作

    Spring Security permitAll()不允许匿名访问的操作

    这篇文章主要介绍了Spring Security permitAll()不允许匿名访问的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06

最新评论