SpringBoot核心@SpringBootApplication使用介绍

作者:盲目的拾荒者 时间:2023-11-25 08:33:59 

@SpringBootApplication的使用

1. Spring Boot 的核心

1.1. 入口类和 @SpringBootApplication

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

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

SpringBoot核心@SpringBootApplication使用介绍

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

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

SpringBoot核心@SpringBootApplication使用介绍

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

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

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

SpringBoot核心@SpringBootApplication使用介绍

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

SpringBoot核心@SpringBootApplication使用介绍

2. @Import({AutoConfigurationImportSelector.class})

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

SpringBoot核心@SpringBootApplication使用介绍

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核心@SpringBootApplication使用介绍

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>

来源:https://blog.csdn.net/niugang0920/article/details/79424325

标签:SpringBoot,@SpringBootApplication
0
投稿

猜你喜欢

  • 基于Java Socket实现一个简易在线聊天功能(一)

    2023-09-23 17:18:35
  • Java实现word/pdf转html并在线预览

    2022-09-09 09:16:49
  • Android 8.0系统中通知栏的适配微技巧

    2022-01-30 17:12:43
  • 动态配置Spring Boot日志级别的全步骤

    2023-01-29 01:57:19
  • C#调用Java类的实现方法

    2022-10-30 11:00:10
  • C# Resources资源详解

    2021-10-13 02:49:32
  • Unity Shader实现序列帧动画效果

    2021-10-31 22:50:18
  • C#中ManualResetEvent用法总结

    2023-01-21 23:41:41
  • Java编程经典小游戏设计-打砖块小游戏源码

    2021-07-08 01:17:28
  • C#异步调用的好处和方法分享

    2023-04-08 11:10:56
  • 使用Java开发实现OAuth安全认证的应用

    2023-07-16 13:55:44
  • IDEA怎么生成UML类图的实现

    2023-12-07 15:40:21
  • 解决BigDecimal转long丢失精度的问题

    2022-07-16 13:44:22
  • Spring中ApplicationContextAware的使用方法详解

    2023-12-25 07:01:33
  • Java使用DFA算法实现敏感词过滤的示例代码

    2022-10-21 00:56:13
  • Android Recyclerview实现多选,单选,全选,反选,批量删除的功能

    2021-12-10 21:57:24
  • java结合email实现自动推送功能

    2023-07-09 00:16:43
  • C#将时间转成文件名使用方法

    2022-08-15 05:59:22
  • Java内存模型JMM与volatile

    2022-03-25 09:33:50
  • 解决idea check out 切换分支时找不到需要的分支问题

    2023-04-04 09:12:57
  • asp之家 软件编程 m.aspxhome.com