springboot核心原理之@SpringbootApplication

1.@SpringbootApplication

@Configuration标志的类 在spring ioc启动的时候就会加载创建这个类对象

@EnableAutoConfiguration 中有两个注解

(1)@AutoConfigurationPackage 扫描主程序包(主程序main所在包及其子包)
可以看到这个类 :
static class Registrar implements ImportBeanDefinitionRegistrar, DeterminableImports {
这个类是注册组件的

	 public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
        AutoConfigurationPackages.register(registry, (String[])(new PackageImports(metadata)).getPackageNames().toArray(new String[0]));
    }
		AnnotationMetadata 启动类的一些元信息
		debug打这个断点的时候  执行	new PackageImports(metadata)).getPackageNames() 可以得到主程序所在包的包名
	这个注解两个作用:
	利用@import给容器导入组件和把主程序所在的包的所有组件导入进来		

( 2 )	@Import({AutoConfigurationImportSelector.class}) 向容器中注入类

在这里插入图片描述

加载自动配置类
在这里插入图片描述

扫描spi文件
在这里插入图片描述
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}

组件扫描 排除一些组件
(1)这个类实现在这里插入图片描述
(2)排除已经扫描进来的配置类和自动配置类

在这里插入图片描述

重新启动看执行顺序 先@ComponentScan( 再@EnableAutoConfiguration 最后 @SpringBootConfiguration

run中看 停留在refreshcontext(context)

springboot生命周期:
在这里插入图片描述
自动配置在初始化组件创建中 stated 中refresh是在调用spring 最外层就是启动ioc容器 ioc容器造工厂 工厂造组件
准备工厂可以理解为放车间 放流水线
finishBeaFactoryInitialzation 开始造扫描出的组件 调用无参构造器 或者有参构造器创建
这些组件会被创建
@Configuration
@Componet
@Bean
@Service
。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值