• @SpringBootApplication剖析


    一、前言

    在SpringBoot项目中启动类必须加一个注解@SpringBootApplication,今天我们来剖析@SpringBootApplication这个注解到底做了些什么。

    二、@SpringBootApplication简单分析

    进入@SpringBootApplication源代码如下:

    可以看出@SpringBootApplication是一个复合注解,里边主要组合了

    @SpringBootConfiguration、@CompoentScan、@EnableAutoConfiguration这三个注解。

    1、@SpringBootConfiguration

    @SpringBootConfiguration组合了@Configuration,它是用来声明当前类是一个配置类,被注解类的内部包含一个或多个@Bean注解的方法,用于替换xml配置定义,这些方法将被

    AnnotationConfigApplicationContext类进行扫描,注入Spring容器中。

    简单例子:直接使用@Configuration和@Bean来注入容器。

    (1)创建一个普通项目,引入依赖

    implementation 'org.springframework:spring-context:5.1.9.RELEASE'

    2)创建一个Configuration类 ,定义Bean对象。

    @Configuration @Bean相当于

        

    的定义。

    (3)测试类

    通过AnnotationConfigApplicationContext将定义的Bean加载到Spring IOC容器中。

    输出如下:

    注:AnnotationConfigApplicationContext最终会调用BeanDefinitionReaderUtils.registerBeanDefinition进行注入。

    2、@CompoentScan

    定义一个Spring Bean是在类上加上注解@Service、@Controller、@Compent就可以,而Spring是通过扫描@CompoentScan指定包下所有加了注解的类,如果不写它只会加载启动类所在的包及下级包。

    简单例子:

    (1)、在包com.example.sacn新建一个类

    (2)、在包com.example.app下创建一个启动类

    (3)、输出找不到对应的Bean

    (4)、启动类加注解,运行正常

    @ComponentScan("com.example.scan")

    具体源代码在

    ComponentScanAnnotationParser.parse()会将所有标注了@Component并匹配@ComponentScan规则的类都注册到容器中去,@Controller、@Service、@Responsitory都标有@Conpoment注解。

    3、@EnableAutoConfiguration

    @EnableAutoConfiguration是SpringBoot实现自动化配置的核心注解,通过这个注解把Spring应用所需的bean注入到容器中。

    @EnableAutoConfiguration通过@Import注入一个ImportSelector的实现类AutoConfigurationImportSelector,这个类根据我们的配置动态加载所需要的Bean。

    核心代码如下:

    注:主要完成过滤筛选需要注入的类。

    催着吃钣了!

  • 相关阅读:
    “最强7B模型”论文发布,揭秘如何超越13B版Llama 2
    TS初体验
    函数指针、函数指针数组、计算器+转移表等归纳总结
    高并下如何做变量的自增与自减
    vue 无限滚动插件 vue-seamless-scroll
    工地反光衣识别检测系统
    ElasticSearch+ES HEAD安装详细教程
    计算机毕业设计ssm+vue基本微信小程序的奶茶点单系统
    渗透测试-CSRF漏洞
    Linux 下孤儿进程与僵尸进程详解
  • 原文地址:https://blog.csdn.net/2301_76787421/article/details/133590731