【java面试】框架篇之Spring
2024-10-08 06:12:57
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支持如下两种方式的事务管理:
编程式事务管理:这意味着你可以通过编程的方式管理事务,这种方式带来了很大的灵活性,但很难维护。
6.SpringMVC与Struts2的主要区别?
①springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
②springmvc是基于方法开发,传递参数是通过方法形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
③Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request对象内容进行解析成方法形参,将响应数据和页面封装成ModelAndView对象,最后又将模型数据通过request对象传输到页面。 Jsp视图解析器默认使用jstl。
③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)
)
)
欢迎关注微信公众号
最新文章
- Ubuntu菜鸟入门(八)—— QQ安装
- C#ListBox对Item进行重绘,包括颜色
- Android 手机卫士--是否有密码区分对话框类型
- C#DataGridView中的常用技巧
- import numpy 和 from numpy import * 的区别
- 配置MySQL使用HugePages
- 基于jQuery 的图片瀑布流实现
- .NET基础拾遗(3)字符串、集合和流3
- 用fiddler测试ip轮询
- ebtables
- Fourier分析基础(一)&mdash;&mdash;Fourier级数
- JavaWeb总结(九)—过滤器
- redis动态配置
- [P5170] 类欧几里得算法
- MongoDB框架Jongo的使用介绍
- python第三十七天--异常--socket
- JS、JAVA刷题和C刷题的一个很重要的区别
- 常用C语言time时间函数
- C/C++控制Windows关机/注销/重启的正确姿势
- 11Java网络编程