【转】spring和springMVC的面试问题总结

1.SpringAOP的应用场景、Aop原理、好处?html

答:AOP--Aspect Oriented Programming面向切面编程;用来封装横切关注点,具体能够在下面的场景中使用:前端

Authentication 权限、Caching 缓存、Context passing 内容传递、Error handling 错误处理Lazy loading懒加载、Debugging调试、logging, tracing, profiling and monitoring 记录跟踪优化 校准、Performance optimization 性能优化、Persistence 持久化、Resource pooling 资源池、Synchronization 同步、Transactions 事务java

原理:AOP是面向切面编程,是经过动态代理的方式为程序添加统一功能,集中解决一些公共问题。spring

优势:1.各个步骤之间的良好隔离性耦合性大大下降 
           2.源代码无关性,再扩展功能的同时不对源码进行修改操做 
数据库

2.SpringIOC的做用与原理?对象建立的过程。编程

答:IOC--Inversion of Control控制反转。当某个角色须要另一个角色协助的时候,在传统的程序设计过程当中,一般由调用者来建立被调用者的实例对象。但在spring中建立被调用者的工做再也不由调用者来完成,所以称为控制反转。建立被调用者的工做由spring来完成,而后注入调用者 直接使用。后端

3.介绍spring框架设计模式

   它是一个一站式(full-stack全栈式)框架,提供了从表现层-springMVC到业务层-spring再到持久层-springdata的一套完整的解决方案。咱们在项目中能够只使用spring一个框架,它就能够提供表现层的mvc框架,持久层的Dao框架。它的两大核心IoCAOP更是为咱们程序解耦和代码简洁易维护提供了支持。缓存

4.Spring常见建立对象的注解?性能优化

答:@Component@Controller@ Service@ Repository

5.Spring中用到的设计模式

答:简单工厂、工厂方法、单例模式、适配器、包装器、代理、观察者、策略、模板方法

详细介绍:请参考本微博的:开发经常使用设计模式

6.Spring的优势?

答:1.下降了组件之间的耦合性 ,实现了软件各层之间的解耦 
2.可使用容易提供的众多服务,如事务管理,消息服务等 
3.容器提供单例模式支持 
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能 
5.容器提供了众多的辅助类,能加快应用的开发 
6.spring对于主流的应用框架提供了集成支持,如hibernateJPAStruts 
7.spring属于低侵入式设计,代码的污染极低 
8.独立于各类应用服务器 
9.springDI机制下降了业务对象替换的复杂性 
10.Spring的高度开放性,并不强制应用彻底依赖于Spring,开发者能够自由选择spring 的部分或所有 

7.Spring Bean的做用域之间有什么区别?

Spring容器中的bean能够分为5个范围。全部范围的名称都是自说明的,可是为了不混淆,仍是让咱们来解释一下:

singleton:这种bean范围是默认的,这种范围确保无论接受到多少个请求,每一个容器中只有一个bean的实例,单例的模式由bean factory自身来维护。

prototype:原形范围与单例范围相反,为每个bean请求提供一个实例。

request:在请求bean范围内会每个来自客户端的网络请求建立一个实例,在请求完成之后,bean会失效并被垃圾回收器回收。

Session:与请求范围相似,确保每一个session中有一个bean的实例,在session过时后,bean会随之失效。

global-sessionglobal-sessionPortlet应用相关。当你的应用部署在Portlet容器中工做时,它包含不少portlet。若是你想要声明让全部的portlet共用全局的存储变量的话,那么这全局变量须要存储在global-session中。

全局做用域与Servlet中的session做用域效果相同。

8.Spring管理事务有几种方式?

答:有两种方式:

1、编程式事务,在代码中硬编码。(不推荐使用)

2、声明式事务,在配置文件中配置(推荐使用)

声明式事务又分为两种:

a、基于XML的声明式事务

b、基于注解的声明式事务

9.spring中自动装配的方式有哪些?

答:1No:即不启用自动装配。

2byName:经过属性的名字的方式查找JavaBean依赖的对象并为其注入。好比说类Computer有个属性printer,指定其autowire属性为byName后,Spring IoC容器会在配置文件中查找id/name属性为printerbean,而后使用Seter方法为其注入。

3byType:经过属性的类型查找JavaBean依赖的对象并为其注入。好比类Computer有个属性printer,类型为Printer,那么,指定其autowire属性为byType后,Spring IoC容器会查找Class属性为Printerbean,使用Seter方法为其注入。

4constructor:通byType同样,也是经过类型查找依赖对象。与byType的区别在于它不是使用Seter方法注入,而是使用构造子注入。

5autodetect:在byTypeconstructor之间自动的选择注入方式。

6default:由上级标签<beans>default-autowire属性肯定。

10.spring中的核心类有那些,各有什么做用?

答:BeanFactory:产生一个新的实例,能够实现单例模式

BeanWrapper:提供统一的getset方法

ApplicationContext:提供框架的实现,包括BeanFactory的全部功能

11.Bean的调用方式有哪些?

答:有三种方式能够获得Bean并进行调用:
1、使用BeanWrapper
HelloWorld hw=new HelloWorld();
BeanWrapper bw=new BeanWrapperImpl(hw);
bw.setPropertyvalue(msg,HelloWorld);
system.out.println(bw.getPropertyCalue(msg));
2、使用BeanFactory
InputStream is=new FileInputStream(config.xml);
XmlBeanFactory factory=new XmlBeanFactory(is);
HelloWorld hw=(HelloWorld) factory.getBean(HelloWorld);
system.out.println(hw.getMsg());
3、使用ApplicationConttext
ApplicationContext actx=new FleSystemXmlApplicationContext(config.xml);
HelloWorld hw=(HelloWorld) actx.getBean(HelloWorld);
System.out.println(hw.getMsg());

12.么是IOC,什么又是DI,他们有什么区别?

答:依赖注入DI是一个程序设计模式和架构模型, 一些时候也称做控制反转,尽管在技术上来说,依赖注入是一个IOC的特殊实现,依赖注入是指一个对象应用另一个对象来提供一个特殊的能力,例如:把一个 数据库链接已参数的形式传到一个对象的结构方法里面而不是在那个对象内部自行建立一个链接。控制反转和依赖注入的基本思想就是把类的依赖从类内部转化到外 部以减小依赖

应用控制反转,对象在被建立的时候,由一个调控系统内全部对象的外界实体,将其所依赖的对象的引用,传递给它。也能够说,依赖被注入到对象中。所 以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。

13.spring有两种代理方式:

答: 若目标对象实现了若干接口,spring使用JDKjava.lang.reflect.Proxy类代理。

      优势:由于有接口,因此使系统更加松耦合

      缺点:为每个目标类建立接口

若目标对象没有实现任何接口,spring使用CGLIB库生成目标对象的子类。

      优势:由于代理类与目标类是继承关系,因此不须要有接口的存在。

      缺点:由于没有使用接口,因此系统的耦合性没有使用JDK的动态代理好。

14.springMVC的流程?

答:1.用户发送请求至前端控制器DispatcherServlet

2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(若是有则生成)一并返回给DispatcherServlet

4.DispatcherServlet经过HandlerAdapter处理器适配器调用处理器

5.执行处理器(Controller,也叫后端控制器)

6.Controller执行完成返回ModelAndView

7.HandlerAdaptercontroller执行结果ModelAndView返回给DispatcherServlet

8.DispatcherServletModelAndView传给ViewReslover视图解析器

9.ViewReslover解析后返回具体View

10.DispatcherServletView进行渲染视图(即将模型数据填充至视图中)。

11.DispatcherServlet响应用户

15.Springmvc的优势

答:1.它是基于组件技术的.所有的应用对象,不管控制器和视图,仍是业务对象之类的都是 java组件.而且和Spring提供的其余基础结构紧密集成.

2.不依赖于Servlet API(目标虽是如此,可是在实现的时候确实是依赖于Servlet)

3. 能够任意使用各类视图技术,而不只仅局限于JSP

4 . 支持各类请求资源的映射策略

5 .它应是易于扩展的

 

转自:https://blog.csdn.net/qq_39470733/article/details/77709607

相关文章
相关标签/搜索