框架集合-源码分析面试题

本文详细探讨了Spring框架的核心概念,包括控制反转、依赖注入、AOP(面向切面编程)及其实现原理。阐述了Spring框架的使用原因,如解决松耦合问题、提供多种服务、高度开放性以及对其他框架的集成支持。同时,解释了SpringIOC容器的作用,介绍了SpringAOP的技术细节,如动态代理(JDK和CGLIB)及应用场景。此外,还涉及了Spring中的重要注解、事务管理、单例bean的线程安全问题以及Spring Bean的生命周期。文章适合面试准备和Spring框架学习者阅读。
摘要由CSDN通过智能技术生成

一:谈谈什么是Spring?
答:(1): Spring的核心是控制反转、依赖注入,Aop(面向切面)相当于把每个bean与bean之间的关系交给第三方容器进行管理.
(2): Spring的底层实现机制首先是使用Dom4j解析xml配置文件,然后使用Java反射机制实例化bean。
二:为什么要用Spring?
答:(1) Spring解决了务逻辑层和其他各层的松耦合问题,而且它将面向接口的编程思想贯穿整个系统应用。
(2) Spring提供的众多服务,如事务管理,消息服务等,可以加快应用系统的开发。
(3) Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部。
(4) Spring对于主流的应用框架提供了集成支持,如MyBatis\SpringMVC\SpringDataJPA\Shiro等。
(5) Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能。

三:什么是SpringIOC容器?
答:(1) SpringIOC即控制反转相当于把每个bean与bean之间的关系交给第三方容器管理,而这个容器就是Spring。
(2) 控制反转也可以称为依赖注入,即由容器负责把组件所依赖的具体对象注入给组件,一般以硬编码的方式,
从而避免组件以硬编码的方式耦合在一起。
四:简述SpringIOC实现原理?
答: (1) 首先是使用Dom4j解析xml配置文件,然后使用Java反射机制实例化bean。
(2) IOC负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

五:什么是SpringAOP?
答:(1) 面向切面的编程或AOP,是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分。
(2) AOP面向方面编程基于IoC,是对OOP的有益补充。
六:SpringAOP技术原理?
答:(1) JDK动态代理和CGLIB代理 JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理;其核心的两个类是InvocationHandler和Proxy。
(2) CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。
(3) CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强:需要引入包asm.jar和cglib.jar。
(4) 使用AspectJ注入式切面和 @AspectJ 注解驱动的切面实际上底层也是通过动态代理实现的。

七:AOP技术的应用场景?
答:(1) Transactions:事务管理
(2) Logging:日志记录
(3) Performance Optimization 性能优化,效率检查
(4) Authentication 权限检查
(5) Error handling 错误处理
(6) Lazy loading 延迟加载

八:AOP技术底层实现原理?
答:(1) 采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行。
(2) 采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。

九:动态代理与静态代理区别?
答: (1) 静态代理实现较简单,只要代理对象对目标对象进行包装,即可实现增强功能。但静态代理只能为一个目标对象服务,如果目标对象过多,则会产生很多代理类。
(2) JDK动态代理需要目标对象实现业务接口,代理类只需实现InvocationHandler接口。动态代理利用了JDK API,动态地在内存中构建代理对象,从而实现对目标对象的代理功能。动态代理又被称为JDK代理或接口代理。
(3) 动态代理生成的类为lass com.sun.proxy. P r o x y 4 , c g l i b 代 理 生 成 的 类 为 c l a s s c o m . c g l i b . U s e r D a o Proxy4,cglib代理生成的类为class com.cglib.UserDao Proxy4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值