1、 什么是spring\springmvc?二者异同点?
Spring是针对JavaSE/JavaEE的一站式轻量级开源框架,主要应用于java开发。
Springmvc是一个类似Struts的mvc框架,隶属于spring,需要spring工具包的支持。
2、 为什么使用spring?(spring的作用)
1.降低耦合度(IOC)
2.增强内聚性(AOP)
3.轻量级,占用资源较少
4.兼容性好,能与其他优秀框架,Struts,hibernate,mybatis
5.非侵入式,spring应用中的对象不依赖spring中的特定类
6.方便测试,spring支持JUnit4,可通过注解进行测试
7.声明式事务的支持,只需通过配置就能完成对事务的管理,无需手动编程
3、 对spring的个人理解
举一个列子:要生产一个高30cm手持枪械有胳膊有腿的塑料小人,传统方法是先生产模型,之后一点点浇筑成型,虽然能够达到要求但可操作性不好,过程繁琐;如果换一种方法,让设计师将小人拆解成一个个零件(各个对象),在图纸上确定如何拼接(xml文件),告诉他我需要一个头,一个身体和一把枪,我们可以先把一部分零件拼成头部,一部分零件拼成身体,最后在合到一起即可,不需要像浇筑那样,从下至上一步步依赖(DI&IOC)。如果日后发生新的需求,比如要求手里拿的是剑不是枪,传统方法就只能重新做,而如今我可在制作的时候就身上留下可拆卸可扩展的节点,只需要将拿剑的地方加上一把剑即可,不影响小人本身(AOP)
4、 什么是bean?
Bean就是spring配置时的根元素.
5、 讲解一下AOP?
所谓aop就是面向对象编程OOP的延伸,面向切面编程,其核心有以下几点:
1、横切关注点:即我们要在什么地方做拦截,拦截之后要做什么
2、切面:即横切关注点的对象
3、连接点:Spring中连接点即被拦截的方法(整个方法定义为连接点)
4、切入点:pointCut,连接点对于拦截的定义(调用此方法触发拦截的行为)
5、通知:即拦截到连接点之后要执行的代码,分为前置、后置、异常、最- 终、环绕
6、目标对象:代理的目标对象
7、织入:将切面应用到目标对象并导致代理创建对象的过程
8、引入:在不修改代码的情况下,引入可以为运行期的类动态地添加一些方法和Field
6、 DI依赖注入的过程?
1.加载xml文件
2.使用SAX解析获取xml根节点,读取每一个元素及其下属子元素.
3.根据2获取的元素,读取classname使用反射机制和newinstance方法实例化所有bean
4.判断所有元素是否有注入属性,获取被注入的bean的所有属性,被注入bean的ref值与注入bean的name值相同就获取被注入bean的set方法(getWriteMethod),获取private权限(setAccessible(true)),之后使用反射机制向被注入bean中注入bean属性。
7、 对bean的理解?
8、 Spring中获取bean的方式?
9、 Bean的生命周期?\servlet的生命周期?
1.实例化对象
2.封装属性
3.SetBeanName
4.设置工厂或者上下文对象
5.执行前处理bean
6.执行属性配置后操作
7.执行后处理bean方法
8.执行指定实例化操作
9.执行业务处理
10.销毁
11.执行指定销毁方法
10、 Spring的核心是什么?
IOC,AOP,DI