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)最后它将这个类的实例返回给我们,我们就可以用了。

Spring Bean的生命周期、Spring MVC的工作流程、IOC,AOP的更多相关文章

  1. Spring Bean的生命周期(非常详细)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

  2. spring bean的生命周期

    掌握好spring bean的生命周期,对spring的扩展大有帮助.  spring bean的生命周期(推荐看)  spring bean的生命周期

  3. Spring Bean的生命周期,《Spring 实战》书中的官方说法

    连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试.这里找到了Spring 实战中的官方说法.希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看 ...

  4. Spring Bean的生命周期相关博客

    最近得面试题一直 问 Spring 得生命周期,鉴于自己还未阅读过源码 所以只能是自己 背一波了.属实不懂硬背得作用,但是无奈被各位面试官打败了.等以后有时间了 一定要阅读几遍spring的 源码 有 ...

  5. Spring学习手札(四)谈谈Spring Bean的生命周期及作用域

    在Spring中,那些组成应用程序的主体以及由Spring IoC容器所管理的对象,被称之为Bean.Bean与应用程序中其他对象(比如自己创建类)的区别就是,Bean是由IoC容器创建于销毁的.在S ...

  6. Spring Bean的生命周期详解(转)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

  7. Spring动态代理及Spring Bean的生命周期

    数组添加值 public class DiTest { /** * 数组 */ private String [] arrays; /** * List:集合 */ private List<I ...

  8. Spring(三)--Spring bean的生命周期

    Spring bean的生命周期 ApplicationContext Bean生命周期流程 1.需要的实体类 ackage com.xdf.bean; import org.springframew ...

  9. spring bean的生命周期与作用域

    bean的作用域 singleton:单例模式,Spring IoC容器中只会存在一个共享的Bean实例,无论有多少个Bean引用它,始终指向同一对象. prototype:原型模式,每次通过Spri ...

随机推荐

  1. netty权威指南学习笔记六——编解码技术之MessagePack

    编解码技术主要应用在网络传输中,将对象比如BOJO进行编解码以利于网络中进行传输.平常我们也会将编解码说成是序列化/反序列化 定义:当进行远程跨进程服务调用时,需要把被传输的java对象编码为字节数组 ...

  2. bzoj 3696: 化合物

    哦,这个困惑了我好久的东西——生成函数(母函数),(然而拿这个东西去向学文化课的同学装逼并不成功...) 生成函数,就是把原来的加法组合变成乘法的指数加法,那么我们要求的值就是相应的指数的系数的值啦, ...

  3. 自动填充IP地址

    在windows下的DOS窗口中 要利用Netsh命令,进入到DOS下的网络配置状态,就能实现各种网络配置. 进入IP设置模式 在DOS环境中,设置网络参数之前,必须先进入IP设置模式才可以.先打开系 ...

  4. 157-PHP strrchr函数输出最后一次出现字母p的位置到字符串结尾的所有字符串

    <?php $str='PHP is a very good programming language!'; //定义一个字符串 echo strrchr($str,'o'); //输出最后一次 ...

  5. [题解] LuoguP6075 [JSOI2015]子集选取

    传送门 ps: 下面\(n\)和\(k\)好像和题目里的写反了...将就着看吧\(qwq\) 暴力打个表答案就出来了? 先写个结论,答案就是\(2^{nk}\). 为啥呢? 首先你需要知道,因为一个集 ...

  6. oracle 使用触发器实现id自增

    前提:存在数据库di_test,主键为id.1.创建一个索引sequence create sequence di_test_id minvalue 1 nomaxvalue start with 1 ...

  7. vue 操作列的自定义

    <el-table-column label="操作"> <template slot-scope="scope"> // 用到了 el ...

  8. python基础(二)抽象

    1 函数与模块 编程大师Martin Fowler先生曾经说过:"代码有很多种坏味道,重复是最坏的一种!" 函数 为了减少代码中重复出现的冗余代码,通常我们选择创建函数来供代码重复 ...

  9. python中MD5使用练习

    import platformpv = platform.python_version()print (pv) import hashlib deomo_val = 'a4ec18'' md5_jm ...

  10. [XSS防御]HttpOnly之四两拨千斤

    今天看了<白帽子讲web安全>一书,顺便记录一下,HttpOnly的设置 httponly的设置值为 TRUE 时,使得Javascript无法获取到该值,有效地防御了XSS打管理员的 c ...