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