1.你如何理解Spring?

具体来说Spring是一个轻量级的容器,用于管理业务相关对象的。核心功能主要为:IOC,AOP,MVC。

IOD:控制反转,将对象的创建过程交给容器,让容器管理对象的生命周期如创建,初始化,销毁等。

AOP:面向切面编程,对关注点进行模块化,通过对某一功能点进行编程,比如记录日志,有很多个类都需要记录日志的方法,则创建记录日志的代理方法,需要调用该功能是只需要调用代理方法,这就是AOP。

MVC:SpringMvc,Spring提供的基于MVC模式设计的Web框架,如今比较流行的框架之一。

2.spring配置bean实例化有哪些方式?

1)使用类构造器实例化(默认无参数)

<bean id="bean1" class="cn.itcast.spring.b_instance.Bean1"></bean>
    2)使用静态工厂方法实例化(简单工厂模式)
//下面这段配置的含义:调用Bean2Factory的getBean2方法得到bean2
<bean id="bean2" class="cn.itcast.spring.b_instance.Bean2Factory" factory-method="getBean2"></bean>
    3)使用实例工厂方法实例化(工厂方法模式)
//先创建工厂实例bean3Facory,再通过工厂实例创建目标bean实例
<bean id="bean3Factory" class="cn.itcast.spring.b_instance.Bean3Factory"></bean>
<bean id="bean3" factory-bean="bean3Factory" factory-method="getBean3"></bean>

3.介绍一下Spring的事物管理

事务就是对一系列的数据库操作(比如插入多条数据)进行统一的提交或回滚操作,如果插入成功,那么一起成功,如果中间有一条出现异常,那么回滚之前的所有操作。这样可以防止出现脏数据,防止数据库数据出现问题。

开发中为了避免这种情况一般都会进行事务管理。Spring中也有自己的事务管理机制,一般是使用TransactionMananger进行管 理,可以通过Spring的注入来完成此功能。

Spring支持如下两种方式的事务管理:

编程式事务管理:这意味着你可以通过编程的方式管理事务,这种方式带来了很大的灵活性,但很难维护。

声明式事务管理:这种方式意味着你可以将、用户发送请求至前端控制器DispatcherServlet 
2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。 
3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 
4、DispatcherServlet调用HandlerAdapter处理器适配器 
5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。 
6、Controller执行完成返回ModelAndView 
7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet 
8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器 
9、ViewReslover解析后返回具体View 
10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。 
11、DispatcherServlet响应用户

6.SpringMVC与Struts2的主要区别?

①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。 
③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。

7.Spring中用到哪些设计模式?
1.工厂模式(BeanFactory中)
2.单例模式(Spring中默认bean为单例)
3.适配器模式(HandlerAdater)
4.装饰者模式
5.代理模式(AOP中用到JDK动态代理)
6.观察者模式(listener的实现,例如ApplicationListener)
7.策略模式(定义一系列的算法,把它们一个个的封装起来,并且使它们可以相互替换。在实例化对象时用到)
8.模板模式(jdbcTemplate)
)

欢迎关注微信公众号

最新文章

  1. Ubuntu菜鸟入门(八)—— QQ安装
  2. C#ListBox对Item进行重绘,包括颜色
  3. Android 手机卫士--是否有密码区分对话框类型
  4. C#DataGridView中的常用技巧
  5. import numpy 和 from numpy import * 的区别
  6. 配置MySQL使用HugePages
  7. 基于jQuery 的图片瀑布流实现
  8. .NET基础拾遗(3)字符串、集合和流3
  9. 用fiddler测试ip轮询
  10. ebtables
  11. Fourier分析基础(一)&mdash;&mdash;Fourier级数
  12. JavaWeb总结(九)—过滤器
  13. redis动态配置
  14. [P5170] 类欧几里得算法
  15. MongoDB框架Jongo的使用介绍
  16. python第三十七天--异常--socket
  17. JS、JAVA刷题和C刷题的一个很重要的区别
  18. 常用C语言time时间函数
  19. C/C++控制Windows关机/注销/重启的正确姿势
  20. 11Java网络编程

热门文章

  1. github 项目搜索技巧-让你更高效精准地搜索项目
  2. 【原创】http请求中加号被替换为空格?源码背后的秘密
  3. [梁山好汉说IT] 容器概念在北宋社会的应用
  4. vc调用mysql数据库操作例子
  5. 【题解】JXOI2018游戏(组合数)
  6. $NIM$游戏小总结
  7. 机器学习-Pandas 知识点汇总(吐血整理)
  8. nodejs-websocket+ssl证书
  9. 洛谷P1036 选数 题解 简单搜索/简单状态压缩枚举
  10. cassandra中的ACID,与RDBMS中的事务有何不同?