面试经常问的框架问题(一)

前言:框架技术是程序员经常使用的也是面试官经常问的问题,今天跟大家讲讲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的作用域,在<bean>中与一个scope的属性,取值有5中:(常见用的是前2个)

       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值<property name=”email”><null/></property>

      注入空字符串:<property name=”email” value=””></property>
问题七:Spring如何配置数据库驱动?

      1,可以使用c3p0数据库连接池技术。

      2, 使用DriverManagerDataSource数据源来配置数据库驱动。

展开阅读全文

没有更多推荐了,返回首页