1.Spring Bean的生命周期?
(1)构造方法实例化bean。
(2)构造方法设置对象属性。
(3)是否实现aware接口,三种接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware),传递的是不同的实例注入给bean。
(4)初始化init,使用bean。
(5)结束时,销毁destroy方法。

2.Spring MVC的工作流程?
(1)发起请求到前端控制器disPatchServelet。
(2) disPatchServelet调用handlerMapping寻找对应的hander,handlerMapping返回给hander给前端控制器。
(3)disPatchServelet通过HandlerAdapter去调用controller到服务层,返回modelAndView给前端控制器。
(4)disPatchServelet再调用视图解析器解析modelAndView,返回一个view给前端控制器。
(5)disPatchServelet再渲染之后返回给用户。

3.最好能通过阅读源代码,说下IOC,AOP?

IOC: 体现了工厂模式,通过BeanFactory注入实例,将对象交给容器管理,在配置文件定义相应的bean,以及设置相关的属性,让spring容器来生成实例对象以

及管理对象。
AOP: 体现了代理模式,面向切面编程,在不改变源码的情况下,通过预编译方式或者动态代理的方式,invoke反射机制,给程序统一添加功能,如日志。

4.最好能结合反射,说下IOC等的实现原理?
Spring IOC 容器的设计中,主要由两个容器系列:
(1)BeanFactory接口的实现类是一个简单容器系列,该系列的容器只实现了容器最基本的功能;
(2)ApplicationContext接口的实现类是一个高级容器系列,该系列的容器在简单容器的基础上增加了很多面向框架的特性;

举例:

(1)我们定义一个Bean类,这个由BeanFactory工厂来生成。这个类用来存放一个Bean拥有的属性,这个Bean对象包含id,type,和properties三个属性。
(2)然后Spring 就开始加载我们的配置文件了,将我们配置的信息保存在一个HashMap中,HashMap的key就是Bean 的 Id ,HasMap 的value是这个Bean,只有这样 我们才能通过context.getBean("animal")这个方法获得Animal这个类。
(3)现在已经有spring工厂,需要通过反射机制把对应的bean注入进去。通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。
(4)最后它将这个类的实例返回给我们,我们就可以用了。

最新文章

  1. tyvj1192 迎春舞会之集体舞
  2. 常见linux命令释义(第六天)——shell环境变量
  3. ACDC
  4. B - Kefa and Company
  5. 使用Visual Studio 2013对windows应用商店应用进行编码的UI测试
  6. Perl,Python,Ruby,Javascript 四种脚本语言比较
  7. PHPMailer中文说明
  8. javascript 广告移动特效
  9. 使用HttpURLConnection实现多线程下载
  10. [HNOI 2001]产品加工
  11. C# 指定父層級目錄
  12. IIS命令行静默安装脚本-python
  13. C#学习-多态
  14. .net 超长URL请求返回404错误-解决方法
  15. 洛谷 P2802 回家
  16. Dockerfile之nginx(六)
  17. Python 多进程编程之 进程间的通信(Queue)
  18. 时区提示:Local time zone must be set--see zic manual page 2018的解决办法
  19. Individual Project 1 总结
  20. require 与 include 的区别

热门文章

  1. netty权威指南学习笔记二——netty入门应用
  2. 4. Linux 集群安装
  3. Centos7.4 kafka集群安装与kafka-eagle1.3.9的安装
  4. 吴裕雄--天生自然C++语言学习笔记:C++ 运算符
  5. CodeForces - 782B The Meeting Place Cannot Be Changed(精度二分)
  6. tensorflow--建立一个简单的小网络
  7. bzoj 3732Network
  8. 04-String——课后作业1:字串加密
  9. VS 2017 没有工具栏中没有Report Viewer的解决方案
  10. stm32cube 安装 patch