为什么在我们的SpringBoot中我们的主程序必须与我们所扫描的包在同一级目录

问题:
主程序为什么要与我们的包处于同一级目录:
在这里插入图片描述

源码解析:
可以看到我们的@SpringBootApplication主要是由以下几个注解联合完成的:
在这里插入图片描述
其中我们的@SpringBootConfiguration其实就是我们的配置类
@EnableAutoConfiguration其实就是我们的开启自动配置,按住Ctrl进去查看:

在这里插入图片描述
发现我们的最主要的注解就是一个@Import()其作用就是引入一个register的组件

点击register查看我们的注册器为我们注册了什么:

static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports {
        Registrar() {
        }

        public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
            AutoConfigurationPackages.register(registry, (String[])(new AutoConfigurationPackages.PackageImports(metadata)).getPackageNames().toArray(new String[0]));
        }

        public Set<Object> determineImports(AnnotationMetadata metadata) {
            return Collections.singleton(new AutoConfigurationPackages.PackageImports(metadata));
        }
    }

会发现我们的
new AutoConfigurationPackages.PackageImports(metadata)).getPackageNames()在我们调试的状况下,右击evaluate计算出这个其实就是我们当前的类(主程序)所在的包下。
所以通过这个我们就会将被@SpringBootApplication注解的类所在的包下的所有组件注册进来。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值