框架
1.spring优点


Spring设计模式
在 Java 中依然注入有以下三种实现方式:
1. 构造器注入
2. Setter 方法注入
3. 接口注入
AOP的概念

JDK动态代理
实现InvokHandle接口,代理类需要继承接口
CGLIB动态代理,通过继承子类进行代理,ASM字节码生成对象,效率比反射高。
首先通过
Spring自动装配
Spring如何解决循环依赖问题
①:构造器的循环依赖。无法解决:因为加入singletonFactories三级缓存的前提是执行了构造器,
所以构造器的循环依赖没法解决
②: setter循环依赖field属性的循环依赖
setter方式 单例,默认方式(通过递归方法找出当前Bean所依赖的Bean),
然后提前缓存【会放入Cach中】起来。通过提前暴露 -->暴露一个exposedObject用于返回提前暴露的Bean。
https://blog.csdn.net/qq_36381855/article/details/79752689#1577508311688
singletonFactories : 单例对象工厂的cache
earlySingletonObjects :提前暴光的单例对象的Cache 。【用于检测循环引用,与singletonFactories互斥】
singletonObjects:单例对象的cache
springboot自动配置原理
SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration。
@EnableAutoConfiguration的作用是利用AutoConfigurationImportSelector给容器中导入一些组件
可以查看public String[] selectImports(AnnotationMetadata annotationMetadata)方法的内容。
通过protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes)
获取候选的配置,这个是扫描所有jar包类路径下"META-INF/spring.factories"; 然后把扫描到的这些文件包装成Properties对象。
从properties中获取到EnableAutoConfiguration.class类名对应的值,然后把他们添加在容器中。
整个过程就是将类路径下"META-INF/spring.factories"里面配置的所有EnableAutoConfiguration的值加入到容器中。
每一个这样XXAutoConfiguration类都是容器中的一个组件都加入到容器中,用他们来做自动配置。
Spring事务
https://blog.csdn.net/jie_liang/article/details/77600742
spring的bean有哪几种生命周期

BeanFactory:
是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能;
ApplicationContext:
应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;
1) 国际化(MessageSource)
2) 访问资源,如URL和文件(ResourceLoader)
3) 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
4) 消息发送、响应机制(ApplicationEventPublisher)
5) AOP(拦截器)
ApplicationContext实现
1>FileSystemXmlApplicationContext:此容器从一个XML文件中加载bean的定义,
XML Bean配置文件的全路径名必须提供给它的构造函数
2>ClassPathXmlApplicationContext:此容器也从一个XML文件中加载bean的定义,
这里需要正确设置classpath因为这个容器将在classpath里找bean配置
3>WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean
Spring如何处理线程并发问题
利用ThreadLocal以空间换时间
Spring事务的传播行为


Spring事务有声明和编程式两种,编程采用t r a n s a c t i o n T e m p l a t e
声明式事务通过AOP功能,对方法前后进行拦截,在进入方法之前加入一个事务,在方法执行完毕之后根据执行结果进行提交或回滚
事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。
例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启
一个新事务运行,这就是由methodB的事务传播行为决定的。

Springboot问题汇总
https://www.jianshu.com/p/63ad69c480fe/
Mybatis如何将接口和Mapper联合起来
https://blog.csdn.net/sinat_25991865/article/details/89891581
根据接口名获取对应得带来对象,代理对象调用时,sqlSession.selectList

通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?
Dao接口里的方法,参数不同时,方法能重载吗?

posted on 2020-03-31 22:19 huangzhihao 阅读(191) 评论(0) 收藏 举报
浙公网安备 33010602011771号