springboot源码阅读需要提前了解的知识点

SpringBoot 源码透彻解析——必须提前了解的几个知识点(这些玩意充斥到springboot源码的各个角落)

  1. SpringFactoriesLoader.loadFactories(ApplicationContextFactory.class,getClass().getClassLoader() : 根据 spring.factories文件,获取实现类的实例;
  1. Binder.get(environment).bind(“spring.main”, Bindable.ofInstance(this)); 绑定配置文件属性到相关类实例;
  1. BeanDefinitionRegistry 用来将beanDefinition注册到容器(还没生成bean);
  1. RootBeanDefinition ChildBeanDefinition GenericBeanDefinition的作用 ;
  1. spring.factories : 用来记录需要自动装配的配置类;
    spring-autoconfigure-metadata.properties:用来记录配置类的装配条件(ConditionOnClass, ConditionOnBean等等)

      注意1:这里有一个细节,在spring-autoconfigure-metadata.properties里面写Condition等条件等 同于在配置类上写,    并且启动快;
    
      注意2:@ConditionOnClass(XXX.class)用在类上安全(判断时是加载的class原文件进行ASM技术解析文件)而用在方法上是不安全的,如果不存在类会报错 sun.reflect.annotation.TypeNotPresentExceptionProxy,所以这个注解只放在类上或者放在方法上用name属性@ConditionOnClass(name="org.example.user");
    
  1. idea里面 Properties指的是提供了get/set方法的私有字段,Field指的是没有提供get/set方法的私有字段只在本类访问;
  1. option和provided都表示依赖不传递;

      optional 表示某个依赖可选,该依赖是否使用都不会影响服务运行。例子:吃面时候,酱油就是可选的,加不加都不会影响面的正常使用。
      provided 表示某个依赖必须,不过该依赖通常是由系统或者容器提供,不提供会报错,不需要自己关系。例子:吃面时候,筷子、碗这样的东西都是必须的,不过这些一般是店家给顾客备好,不需要顾客自带。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

koral chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值