boneix 2019-10-24
很多人在面试的时候,可能都会被问到这些问题:是否看过开源框架的源码?谈谈你看过源码之后的心得?其实我们常用的Spring、MyBaits这样的框架可以说是JAVA里面最经典的教科书,从中你能学习到很多写代码的经验技巧,而去悟开源框架中蕴含的优雅架构设计之道这才是最重要的。今天通过我整理的Spring笔记.xmind的重要的知识点来讲讲Spring所需掌握的知识点和面试常问的一些问题!
AOP 的内部原理其实就是动态代理和反射了。主要涉及到的反射类:
动态代理相关原理的话,你需要了解什么是代理模式、静态代理的不足、动态代理的实现原理。Spring 中实现动态代理有两种方式可选,这两种动态代理的实现方式的一个对比也是面试中常问的。
JDK 动态代理
必须实现 InvocationHandler 接口,然后通过 Proxy.newProxyInstance(ClassLoader
loader, Class>[] interfaces, InvocationHandler h) 获得动态代理对象。
CGLIB 动态代理
使用 CGLIB 动态代理,被代理类不需要强制实现接口。CGLIB 不能对声明为 final
的方法进行代理,因为 CGLIB 原理是动态生成被代理类的子类。
OK,AOP 讲了。其实讲到这里,可能会有一个延伸的面试问题。我们知道,Spring
事 物 也 是 通 过 AOP 来 实 现 的 , 我 们 使 用 的 时 候 一 般 就 是 在 方 法 上 加
@Tranactional 注解,那么你有没有遇到过事物不生效的情况呢?这是为什么?这
个问题我们在后面的面试题中会讲。
SpringIOC
IoC 内部核心原理就是反射技术,当然这里面还涉及到 Bean 对象的初始化构建等步骤,这个在后面的生命周期中讲,这里我们需要了解 Java 中反射是如何做的就好。这里主要说明下主要的相关类和可能面试问题转向,具体的 API 实现需要自己去看。
还有其他的类不一一列举出来,都在 java.lang.reflect 包下。说到这个模块的时候,那么面试官可能会考察相关的知识,主要是考察你是否真的有去了解过反射的使用。
举两个例子:
利用反射获取实例的私有属性值怎么做?
这里其实就是里面的重要考察点就是反射对私有属性的处理。
/*** 通过反射获取私有的成员变量. */ private Object getPrivateValue(Person person, String fieldName) { try {Field field = person.getClass().getDeclaredField(fieldName); // 主要就是这里,需要将属性的 accessible 设置为 true field.setAccessible(true);return field.get(person); } catch (Exception e) { e.printStackTrace(); }return null; }
如何通过反射构建对象实例?
//使用默认构造函数(无参)创建的话: Class.newInstance() //构造函数带参的话: Constroctor constroctor = clazz.getConstructor(String.class,Integer.class); Object obj = constroctor.newInstance("name", 18);
对应导图我有自己平时整理出来的Spring学习笔记精华文档,在这拿出来免费分享给有需要的朋友,需要获取的朋友帮忙转发一下然后私信回复我关键词【Spring】获取文档免费领取方式!
对于开发同学来说,Spring 框架熟悉又陌生。 熟悉:开发过程中无时无刻不在使用 Spring 的知识点;陌生:对于基本理论知识疏于整理与记忆。导致很多同学面试时对于 Spring 相关的题目知其答案,但表达不够完整准确。下面分享互联网公司Java面试高频常问的100道题及解析!
注:为了不影响阅读,我已经把解析整理成pdf免费分享出来,有需要的朋友帮忙转发一下然后私信回复我关键词【Spring】获取文档免费领取方式!
注:为了不影响阅读,我已经把解析整理成pdf免费分享出来,有需要的朋友帮忙转发一下然后私信回复我关键词【Spring】或【面试】获取文档免费领取方式!
同时还分享更多精选整理的学习资料,包含(Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构资料和完整的Java架构学习进阶导图!)
资料免费领取方式:转发+转发+转发关注后,私信关键词【资料】即可获取免费领取方式!
重要的事说三遍,转发+转发+转发!
架构学习视频
---------------------------------本文来源于网络,如有侵权请联系博主删除!