Spring
一.spring优势
1,生态好,很多组件都是在它的基础上运行的。上层应运都是以他为基石的。
2,spring对对象的管理,
3. 提供了切面
二; Spring 事务传播机制
A 里面调用 B , A有事务,他就用,没有,他就新调用。 required 默认的,
在这里面可以设置很多的。 A和B的不同逻辑。
Spring springMVC springbOOT
Spring 是一个完整的框架, 提供了对业务层,数据层处理的
SpringMVC 是Spring 的一个模块 包含了前端 ,中间 数据层。
Springboot 对Spring的开发做了一个简化的开发工具。 内置了tomcat 。
Springboot 自动装配原理
spring工作原理
Spring 默认单列的。
spring 生命周期
扫描类,退团构造方法, 实力话,得到been独享。 属性填充 。 更具加了注解。 回调aword 方法, 可以在这里加些自己的方法。
初始化方法, bean 放到单例池中,最后销毁。
Spring 扫描 class 得到 BeanDefinition;
根据得到的 BeanDefinition 去生成 bean;
首先根据 class 推断构造方法;
根据推断出来的构造方法,反射,得到一个对象(暂时叫做原始对象);
填充原始对象中的属性(依赖注入);
如果原始对象中的某个方法被 AOP 了,那么则需要根据原始对象生成一个代理对象;
把最终生成的代理对象放入单例池(源码中叫做 singletonObjects)中,下次 getBean 时就直接从单例池拿即可
Spirng 循环依赖
Spring 如何接入别的组件 。
Spring Aop 如何实现 ?
mybatis Starts , 自己会把自己的用到的sqlfongifaction 这些类。 写一个配置类。 放到一个位置中, Spring 加载的时候会扫描这个位置, 然后就加载到spring容器中。。 他们是约定好的。
Spring 循环依赖如何解决的
有两个类 A 和 B ,A和B中胡互为属性 。
A 单列池中没有 , B去找,, B在单列池找,没有 去A中找。 他两就无限循环了。。 给一个类B加一个lazy
注解, 放一个空的对象B ,
用 autowire ,spring 自己帮我们解决了。 三级缓存。
单列池下加一个二级缓存, bean, new 对象 空的。 后面会有注入的过程。
一级缓存; 完整的生命周期
二级缓存 : 半成品,没有属性注入的、
三级缓存 :
「singletonFactories」:缓存的是一个 ObjectFactory ,主要用来去生成原始对象进行了 AOP之后得到的「代理对象」,在每个 Bean 的生成过程中,都会提前暴露一个工厂,这个工厂可能用到,也可能用不到,如果没有出现循环依赖依赖本 bean,那么这个工厂无用,本 bean 按照自己的生命周期执行,执行完后直接把本 bean 放入 singletonObjects 中即可,如果出现了循环依赖依赖了本 bean,则另外那个 bean 执行 ObjectFactory 提交得到一个 AOP 之后的代理对象(如果有 AOP 的话,如果无需 AOP ,则直接得到一个原始对象)
beanfactory 和factorybean 的区别
相同点,都是用来创建bean对象的,
beanfactory 创建对象遵循实例化的流程
factorybean 上线这个接口,自己顶定制化的的开发。 这个比较简单。
AOP 的原理 :
总的, 描述应运, 实现 。
对象的安全 。
事务
设计的模式 。
浙公网安备 33010602011771号