前言:框架技术是程序员经常使用的也是面试官经常问的问题,今天跟大家讲讲Spring框架。
问题一:Spring是什么及Spring的优点?
Spring是一个轻量级的IOC和AOP容器框架。
优点:a,Spring是非侵入式的,基于Spring开发的应用一般不依赖于Spring的类;
b,Spring是个容器,因为它包含并且管理应用对象的生命周期和配置,比如对象的创建、销毁、回调等。
c,Spring提供对事务的管理;
d,Spring对主流的框架提供了很好的集成支持,比如和hibernate SpringMVC等框架的集成。
那么问题二又来了:AOP和IOC是什么?
IOC:控制反转,也称为DI(依赖注入),依赖对象的创建和维护交给了Spring容器来管理,原本应该我们要去new对象这个操作转到spring容器中执行,我们就不需要去new了,而且增强了性能(解说:因为在Controller层每次访问servlet层都要new对象,就会浪费很多资源,而交给Spring的xml配置bean,这样一来不用自己new二来是单例模式,xml文件只加载一次,就不用new很多个对象啦)
AOP:面向切面编程(本质是拦截器),在我们项目中使用的事务和日志就是很好的体现了AOP。
比如:每次我们对数据库进行增删改之前,都需要开启事务,进行操作后需要提交事务,每次写代码都要开启和提交非常的繁琐,麻烦,所有我们写了一个拦截器,底层采用动态代理实现前置通知和后置通知,在前置通知中开启事务,在后置通知中提交事务,只需要在spring.xml中配置通知即可,spring的事务管理底层就用到了AOP然后你就不用在做繁琐的开启/提交事务。
问题三:Spring的注入方式有那些?
1,Setter注入:就是通过setter方法注入属性值,如果依赖关系比较复杂,那么构造方法注入会导致构造方法相当庞大,此时使用设值方式更为简洁。
2,构造注入:在构造方法注入可创建一个完整、合法的对象;避免了繁琐的setter方法的编写,所有的依赖关系均在构造方法中设定,依赖关系集中体现。
3,接口注入:接口注入因具备侵入性,它要求组件必须与特定的接口相关联,因此这种注入方式基本上已经被遗弃了。
问题四:如何定义bean的作用域,作用域之间的区别?
定义bean的作用域,在
1,singleton:单例模式(默认),也就是说这种范围不管接收到多少个请求,每个容器中之后一个bean的实例。
2,prototype:原型模式,和单例模式相反,为每一个bean请求提供一个实例。
3,request:针对每一次HTTP请求都会产生一个新的bean,并且该bean仅在当前request内有效,请求完成以后,bean会失效并被垃圾回收器回收。
4,session:针对每一次HTTP请求都会产生一个新的bean,并且该bean仅在当前session内有效,session过期后,bean也会随之失效。
5,Global session:global session和portlet应用相关,当你的应用部署在Portlet容器中工作时,如果你想让所有的portlet共用全局存储变量的话,就需要存储到global session中。
问题五:什么是spring的自动装配?并解释一下自动装配的各种模式?
Spring的自动装配:无须在Spring配置文件中描述javabean之间的依赖关系,IOC容器会自动建立JavaBean之间的关联关系。
1,根据属性名称自动装配autowire=”byName”;
2,根据数据类型自动装配autowire=”byType”;
3,根据构造方法自动装配autowire=”constructor”;
问题六:spring中注入null或者空字符串吗?
可以,注入null值
注入空字符串:
问题七:Spring如何配置数据库驱动?
1,可以使用c3p0数据库连接池技术。
2, 使用DriverManagerDataSource数据源来配置数据库驱动。