前言:这几天的面试,感觉自己对spring 的整个掌握还是很薄弱。所以需要继续加强。

这里说明一下spring的这几个面试题,但是实际的感觉还是不对的,这种问题我认为需要真正读了spring的源码后说出来的东西才有意义。这种面试的问法,也只能是面试的问法,对实际的掌握还是没有丝毫意义的。所以我认为 有机会一定要读下spring的源码 来过一遍 具体实现,这样的才是有意义的做法。同意的请举手。

这里说明一下这三个spring 面试问题:

1、回客科技 面试的 实现ioc 容器用到的技术

第1种 说法:

参考:自己实现简单Spring Ioc

IoC则是一种 软件设计模式,简单来说Spring通过工厂+反射来实现IoC。

原理简单说明:
其实就是通过解析xml文件,通过反射创建出我们所需要的bean,再将这些bean挨个放到集合中,然后对外提供一个getBean()方法,以便我们获得这bean。

第2种 说法:

参考:https://blog.csdn.net/zhanghaor/article/details/73431021

使用的主要知识点:    

dom4j解析xml文件  

xpath表达式(用于解析xml中的标签) 

java反射机制   

内省(获取Bean属性的set方法进行赋值)

第3种 说法

参考:Spring的IOC/DI使用到的技术

IOC/DI使用到的技术

  1. JDOM:JDOM是对xml文件进行解析的技术,Spring的配置文件applicationContext.xml就是由JDOM进行解析的,它可以提取出xml文件中定义的标签和属性值。

  2. 反射机制:对配置文件中的类名使用反射机制可以实现类加载初始化等工作,也可以调用类的方法进行属性注入,java.lang.reflect提供了反射相关的工具

2:简述BeanFactory的实现原理

这里是cp的代码,为什么cp 是因为 这几句关键的东西需要我记住的。

参考博客:简单实现Spring中BeanFactory原理

先来看看Java代码获取Spring中Bean的代码(一共有五种方式,这里只展示其中一种方法):

有没有发现上面的代码与利用反射实现工厂模式的代码很相似。对,你没有看错,Spring中的BeanFactory用到的就是简单工厂模式。

现在的思路就更加清晰了,要想实现Spring中的BeanFactory,无非就用到了以下几个技术:

1.使用简单工厂模式来处理bean容器。

2.解析xml文件,获取配置中的元素信息。

3.利用反射获实例化配置信息中的对象。

4.如果有对象注入,使用invoke()方法。

5.实例化的对象放入bean容器中,并提供getBean方法。

通过以上步骤就实现了spring的BeanFactory功能,只要在配置文件中配置好,实例化对象的事情交给BeanFactory来实现,用户不需要通过new对象的方式实例化对象,直接调用getBean方法即获取对象实例。

3、大搜车面试的 spring 怎么实现的依赖注入(DI)

参考博客:http://blog.163.com/qqabc20082006@126/blog/static/2292852520091125112112902/

在Spring容器中为一个bean配置依赖注入有三种方式:

· 使用属性的setter方法注入  这是最常用的方式;

· 使用构造器注入;

· 使用Filed注入(用于注解方式).

感谢 以上博客代码分享人,目前没有时间读源码,只能先记住了。面试还是需要应付一下的~~

转载于:https://www.cnblogs.com/liran123/p/9393417.html

回客科技 面试的 实现ioc 容器用到的技术,简述BeanFactory的实现原理,大搜车面试的 spring 怎么实现的依赖注入(DI)...相关推荐

  1. 大搜车面试总结 (应届生实习生)

    大搜车的一次笔试面试(2018/6) 参加笔试面试的流程 这次去参加的是应届生的面试,进门首先是扫描二维码,确认自己的身份信息,这个很强大的微信就会提示你和谁联系的几点来参加笔试面试,笔试完了后把题目 ...

  2. 大搜车mysql面试题_【大搜车面试|面试题】-看准网

    介绍项目了解dubbo嘛,能说说为什么用dubbo,而不用 webService.http嘛.谈到高性能,为什么高性能. dubbo 能支持几种协议,zookeeper 在dubbo中做什么,讲讲du ...

  3. 大搜车面试java_大搜车面试经验

    面试过程: 从JS 到 CSS 到网络安全 到 打包 到 Node,最后让我问他问题,我就说阿里基本上是react,我技术栈是vue会受影响吗,或者同等两个candidate,你们会优先考虑react ...

  4. 控制反转(IoC)与依赖注入(DI)详解

    文章目录 什么是控制反转(IoC) 控制反转(IoC)有什么作用 控制反转(IoC)是怎么分类的 依赖注入 接口注入 Setter方法注入 构造器注入 依赖查找 上下文依赖查找(Contextuali ...

  5. 依赖倒置(DIP),控制反转(IoC)与依赖注入(DI)

    DIP,IoC与DI概念解析 依赖倒置 DIP(Dependency Inversion Principle) DIP的两大原则: 1.高层模块不应该依赖于低层模块,二者都应该依赖于抽象. 2.抽象不 ...

  6. 控制反转(Ioc)和依赖注入(DI)

    控制反转IOC, 全称 "Inversion of Control".依赖注入DI, 全称 "Dependency Injection". 面向的问题:软件开发 ...

  7. 控制反转IOC与依赖注入DI

    为什么80%的码农都做不了架构师?>>>    1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最 ...

  8. PHP依赖注入(DI)和控制反转(IoC)详解

    这篇文章主要介绍了PHP依赖注入(DI)和控制反转(IoC)的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 首先依赖注入和控制反转说的是同一个东西,是一种设计模式,这种设计模式用来减少程 ...

  9. ioc控制反转_深入理解依赖注入(DI)和控制反转(IOC)

    转载本文务必须注明出处.微信号(Yemeir_com).以及添加原文链接. 为什么要使用依赖注入 使用依赖注入(DI)可以使控制者与抽象实现者松耦合,便于单元测试.通过控制反转(IOC)的设计原理来减 ...

最新文章

  1. 223.主成分分析PCA
  2. 禁用计算机服务LanmanServer,计算机关闭默认共享C$D$E$F$ADMIN$IPC$的方法
  3. 需求的推动力-网线啥的
  4. win10安装pytorch
  5. 解析mysqlbinlog日志_每日学点---Mysql的binlog日志解析导出
  6. Synchronized同步的考虑
  7. dos拼接字符串以及截取字符串
  8. 10+知识图谱开放下载,让你的学习效率提升5倍! | “右脑”开发套餐
  9. tomcat内存溢出,修改设置
  10. Persistence4j 1.1发布,Java ORM框架
  11. ubuntu关闭服务需要身份验证
  12. Vue笔记(四)——Vue动画路由
  13. 并发编程---填充缓存行消除伪共享
  14. android下拉菜单总结
  15. 十位博客专家极力推荐的 谷歌浏览器插件,用过都说好
  16. 织梦木马 data.php,DedeCMS后门木马专杀工具V2.0
  17. Android笔记-Felix
  18. easypoi导出多个Excel压缩zip下载
  19. 门窗软件测试自学,AutoCAD 2014室内装潢设计完全自学手册[9787111482352]
  20. php去除换行(回车换行)的三种方法

热门文章

  1. tab控件的使用心得
  2. 分布式锁--Redis实现
  3. 如何让Snippet Compiler 2008 支持linq
  4. 堪比“震网”:罗克韦尔PLC严重漏洞可导致攻击者在系统中植入恶意代码
  5. 什么鬼?我能通过依赖混淆攻击在 Halo 游戏服务器中执行命令,微软不 care?!...
  6. Rapid7 部分源代码遭泄露,成 Codecov 供应链攻击第四个受害者
  7. 0day影响 Chrome和 Safari,谷歌不修复
  8. Spring中采用公共变量并发问题解决
  9. Spring 定时任务
  10. IT运维人员该学习哪些技术