Java 最常见的 208 道面试题:第九模块和第十模块答案-spring

90.为什么要用spring
答案:1目的,为了解决企业应用开发的复杂性,功能,使用基本的javabean代替ejb 并提供了更多的企业应用功能,范围,任何java应用
简单来说spring是一个轻量级的控制反转ioc和面向切面aop的容器框架
2轻量,从大小于开销两方面而言spring都是轻量的,完整的spring框架可以在大小值有1mb的jar文件里发布并且spring所需的处理开销也是微不足道,
spring是非入侵式的典型地,spring应用中的对象不以来于spring的特定类
3控制反转,spring通过控制反转ioc促进了松耦合.当应用了ioc,一个对象以来的其他对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找以来对象.你可以认为ioc于jndi相反它不是对象从容器中查找依赖是容器在对象初始化时主动将依赖传递给它
4面向切面,spring期铜了面向切面变成的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发,应用对象只实现他们应该做的,完成业务罗技,不负责其他的系统级关注点,例如日志或事务支持.
5容器spring包含并管理应用对象的配置和声明周期,在这个意义上它是一种容器,你可以配置你的每个been如何被创建,基于一个可配置原型,你的bean可以创建一个单独的应用实例或者每次需要时都生成一个新的实例,一集他们是如何相互关联.
6框架,spring可以将简单的组件配置,组合成为复杂的应用,在spring中应用对象被声明式地组合,典型地是在一个xml里,spring也提供了很多基础功能,事务管理持久化框架集成等等.

91.什么是aop
答案:AOP面向切面编程,可以说是OOP面向对象编程的补充和完善,oop引入封装继承和多台性等概念建立一种对象层次结构,用以模拟公共行为的一个集合.当我们需要为分散的对象引入公共行为时,oop就显得无能为力,也就是说oop允许你定义从上倒下的关系,但并不适合从左到右的关机,例如日志功能,日志代码旺旺水平地散步在所有对象层次中,而与他所散布到的对象的核心功能毫无关系,对于其他类型的代码,如安全性,异常处理,和透明的持续性也是如此,这种散布在各处的无关的代码被成为横切代码,在oop中它导致了大量代码的重复而不利于各模块的重用.
而aop技术恰恰相反,它利用一种横切技术剖解开封装对象内部,并将那些影响了多个类的公共行为封装到一个可重用的模块,并将起命名为aspect即方面,所谓方面,简单地说就是将那些与业务无关,却为业务模块所共同调用的罗技或责任封装起来,便于减少系统的重复代码,降低模块键的耦合读,有利于未来的可操作性和可维护性.

92.什么是ioc
答案:ioc是控制反转,获取依赖的过程,由主动变为被动,由框架注入,控制权颠倒过来,所以叫控制反转

93.spring有哪些模块
答案:核心容器,数据访问,web,aop,消息,测试模块

94.spring常用的注入方式
答案:构造方法注入,setter注入,注解注入

95.spring的bean是线程安全的吗
答案:不是,需要自己实现

97.spring自动装配bean有那些
答案:隐式的bean发现机制和自动装配,在java代码或xml中进行显示配置

98.spring事务实现方式
答案:基于TransactionProxyFactoryBean 的声明式事务管理
@Transactional 的声明式事务管理
Aspectj AOP 配置事务

99.说一下spring的事务隔离级别
答案:事务隔离界别值得是一个事务对数据的修改,与另一个并行的事务的隔离成都,当多个事务同事访问相同数据时,如果没有采取必要的隔离机制,可能发生以下问题
脏读,一个事务读到另一个事务为提交更新的数据
幻读:例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好象发生了幻觉一样。
不可重复读:比方说在同一个事务中先后执行两条一模一样的select语句,期间在此次事务中没有执行过任何DDL语句,但先后得到的结果不一致,这就是不可重复读。

100.说一下springmvc运行流程
答案:1用户向服务器发送请求,请求被前段控制DispatcherServlet捕获,2DispatcherServlet解析请求url,3HandlerMapping将请求传递给映射的方法,4方法开始执行,5返回modelandview

101.springmvc有那些组件
答案:DispatcherServlet:中央控制器,把请求给转发到具体的控制类
Controller:具体处理请求的控制器
HandlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略
ModelAndView:服务层返回的数据和视图层的封装类
ViewResolver:视图解析器,解析具体的视图
Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作

102.@RequestMapping的作用
答案:用来映射请求url和方法

103. @Autowired 的作用是什么?
答案:自动装配

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值