机场建设相关网站,wordpress列表页缩略图,汽车cms,衡阳网站建设步骤SpringBoot 源码透彻解析——必须提前了解的几个知识点#xff08;这些玩意充斥到springboot源码的各个角落#xff09; SpringFactoriesLoader.loadFactories(ApplicationContextFactory.class,getClass().getClassLoader() : 根据 spring.factories文件#xff0c;获取实现…SpringBoot 源码透彻解析——必须提前了解的几个知识点这些玩意充斥到springboot源码的各个角落 SpringFactoriesLoader.loadFactories(ApplicationContextFactory.class,getClass().getClassLoader() : 根据 spring.factories文件获取实现类的实例 Binder.get(environment).bind(“spring.main”, Bindable.ofInstance(this)); 绑定配置文件属性到相关类实例 BeanDefinitionRegistry 用来将beanDefinition注册到容器(还没生成bean) RootBeanDefinition ChildBeanDefinition GenericBeanDefinition的作用 spring.factories : 用来记录需要自动装配的配置类 spring-autoconfigure-metadata.properties用来记录配置类的装配条件ConditionOnClass ConditionOnBean等等 注意1这里有一个细节在spring-autoconfigure-metadata.properties里面写Condition等条件等 同于在配置类上写 并且启动快注意2ConditionOnClass(XXX.class)用在类上安全判断时是加载的class原文件进行ASM技术解析文件而用在方法上是不安全的如果不存在类会报错 sun.reflect.annotation.TypeNotPresentExceptionProxy所以这个注解只放在类上或者放在方法上用name属性ConditionOnClass(nameorg.example.user)idea里面 Properties指的是提供了get/set方法的私有字段Field指的是没有提供get/set方法的私有字段只在本类访问 option和provided都表示依赖不传递 optional 表示某个依赖可选该依赖是否使用都不会影响服务运行。例子吃面时候酱油就是可选的加不加都不会影响面的正常使用。provided 表示某个依赖必须不过该依赖通常是由系统或者容器提供不提供会报错不需要自己关系。例子吃面时候筷子、碗这样的东西都是必须的不过这些一般是店家给顾客备好不需要顾客自带。