1、spring是什么?
开源,分层,一站式,轻量级框架
2、spring的核心有哪些?
1)ioc di
2)aop
3)事务管理
4)webFlux
3、什么是工厂模式? spring bean工厂是不是工厂模式?区别是什么?
一个创建对象的接口,
工厂模式分为简单工厂模式,工厂方法模式和抽象工厂模式.
区别:bean底层利用反射。
4、什么是ioc? ioc配置有几种方式?
控制反转
方式一:基于XML的配置
方式二:注解
方式三:基于Java的配置
5、获取ioc容器的方式有几种,区别是什么?
1 XmlBeanFactory 懒加载
2 ApplicationContext 即时加载
1)ClassPathXmlApplicationContext
2)FileSystemXmlApplicationContext
3 WebApplicationContext
6、从ioc容器中获取bean的方法是哪个?分别有几种形式?
getBean()方法
1)getBean(id)
2)getBean(类名.class)
3)getBean(类的全限定名)
4)getBean(id,类的全限定名)
5) getBean(类名.class,类的全限定名);
7、什么是di?di有哪几种方式
依赖注入;
1)set方法注入(xml、注解)
2)构造方法注入 (xml、注解)
3)工厂方法注入
8、什么是aop?
aop:将目标对象的方法通过动态代理的技术进行植入增强,从而达到增强方法逻辑的目的。
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
9、aop的底层原理是什么?
aop底层原理:动态代理技术 jdk动态代理和cglib动态代理
10、jdk动态代理怎么实现?
jdk动态代理是利用反射机制生成一个代理对象,在调用具体方法前交给InvokeHandler来处理
本质是利用字节拼接技术为接口自动生成了一个代理类$Proxy0(子类)
11、cglib动态代理如何实现?
cglib动态代理是利用asm的jar包,将代理对象类的class文件加载进来,通过修改其字节码生成子类;覆盖非final方法来进行代理。
CGLIB不能代理一个final类或者final方法。
12、jdk动态代理与calib动态代理的区别
区别:
1.JDK动态代理只能对实现了接口的类生成代理,只针对接口实现类 。
2.CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法 。
13、aop中的概念什么是连接点?什么是切点?什么是切面?什么是通知?
什么是植入?什么是代理对象?什么是目标对象?
连接点 可以被增强的方法
切点 被增强的方法
通知/增强 增强的逻辑
切面 就是切点和通知(增强)的统称
植入 将通知植入到目标方法的过程
代理对象 调用被代理的对象,并且把返回结果再传给调用代理对象的对象。
目标对象 被增强的对象
14、事务是什么?
事务:是逻辑上一组操作,要么全都成功,要么全都失败;事物目的就是解决【数据不一致】的问题。
15、事务的4大特性?ACID
原子性:
一致性:
隔离性
持久性:
16、事务的并发问题有哪些?
脏读
不可重复读
虚读
丢失更新
17、事务的隔离级别有哪些?分别解决什么问题?
未提交读: 以上情况都有可能发生。
已提交读: 避免脏读,但不可重复读,虚读是有可能发生。
可重复读: 避免脏读,不可重复读,但是虚读有可能发生。
串行的: 避免以上所有情况. 系统吞吐量很低
18、spring事务管理的核心接口有哪些?
PlatformTransactionManager
TransactionDefinition
TransactionStatus
19、spring中编程式(手动)事务与声明式事务有何区别?开发中一般使用哪种事务方式?
1.手动式针对单个方法进行增强,如果有多个方法,每个方法都要手动调用transactionTemplate
2. 声明式事务通过aop的原理进行增强方法的方式
20、声明式事务如何实现?
第1步:业务的层的哪些方法需要事务(黑客)。
第2步:xml中配置事务管理器 (不同的orm框架 事务管理的方式不同)
第3步:xml配置中定义切面
第4步:xml配置根据切点+增强 ,自动生成业务方法的代理对象
21、手动式事务如何实现?
第1步:业务的层的哪些方法需要事务(黑客)。
第2步:xml中配置事务管理器 (不同的orm框架 事务管理的方式不同)
第3步:在业务类定义TransatcionTemplate事务模板类
第4步:在需要事务管理的方法中
第5步:测试,调用业务类的方法