Springboot 理解
IOC 容器:
主要的包是由org.framwork,beans 和 org.framwork.context 包组成。
核心是使用beanfactory 工厂 在实例化对象的时候生成类之间的写作关系,
加载bean:
springboot bean加载过程 是启动类上run方法 的实现
1创建bean容器 createApplicationContext 方法
2 把bean装在到容器中去, prepareContext 方法 是最重要方法
在怕热prepareContext 方法里面有load() 把声明的配置类加载到容器的具体实现 和 getAllSource()加载声明的配置类
load 方法实现 最重要的是 是把配置类加载到BeanDefinitionLoader 加载器 中
使用@AutoConfigurationOrder 是改变了外部依赖的加载顺序是Spring.factories 文件中的加载顺序。
@AutoConfigurationOrder(10) 这个值越大 在spring.factories 文件中加载的时候越靠前。
使用@service 注解 或者是@Componet 注解 把该对象加入到 IOC容器中,
可以通过xml 配置bean标签加到容器中 (版本是在1.x 版本)
@Required 注解是 设置bean属性setter 方法, bean类中某属性使用这个注解 在xml配置文件中, 必须设置对应类中属性的值
@Repository的作用:这是因为该注解的作用不只是将类识别为Bean,同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型
可以通过 在类上使用@configuration 在类中 使用@bean 注解来加载到容器中。
可以通过 @componentScan 扫描包。 没有指定路径就是扫描当前包以及子包下的所有 加载到容器中去。
这个注解是springboot使用比较多。 在springboot自动装配的过程中,不需要的加载容器中的bean的时候就会使用到@condition 注解来实现的。
@condition 注解 在bean注解上 中使用matches方法 返回值 决定是否加载把当前的bean加载IOC 容器中。
源码是使用@import注解 加到容器中。
使用@import 注解 可以将对象添加到容器中, 返回值是一个数组 可以添加多个, 使用{} 的方式。
使用@import 注解还可以动态, 实现ImportSelector接口, 在selectImport 方法中添加自己要加的类, 在使用@import 注解在导入实现ImportSelector 接口的类
使用@import 注解 , 实现importBeanDefinitonRegistar 接口, 中registrarBeanDefinitions 方法,使用注册器的方式,将要注入的类注入到注册器中, 在使用@import 引用实现importBeanDefinitonRegistar 接口的类
Spring bean factory 的生命周期:
bean的生命周期是有两组call back 方法组成。 是在初始化之后调用,和 在销毁之前调用。
在bean实例化的时候,需要执行一系列的操作达到可用的状态,不需要实例化的时候,就从容器中移除。
applicationContext 和 beanFactory 有什么不同, applicationContext 具有和beanFactory 一样的功能, 但是比beanFactory 功能多一点, 还支持国际化的文本信息, 和在监听器中注册bean事件。