Spring面试总结

Spring面试总结

1,谈谈你对spring的理解

(1)总体介绍:spring是一个非常好的框架,可以说是给开发人员带来了春天(这也是为什么这个框架叫做spring),它其实就是框架与业务逻辑层之间的粘合剂,使得表现层框架与业务逻辑层进行解耦/数据层框架与业务逻辑层进行解耦,使他们之间的耦合度大大的降低,大大方便了软件后期的二次开发和扩展.

Spring相当于一个大的工厂类(BeanFactory),在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。

(2)包含的主要模块:spring主要包含核心部分(也就是IOC容器),spring AOP,spring JDBC,spring ORM,spring MVC等等

(3)各模块的作用:

Spring IOC: spring提供的IOC容器(控制反转)是一种编程思想,也是一种艺术架构,主要负责对象的创建和销毁的管理,实现模块之间的解耦.

Spring AOP: 通过配置管理特性,Spring AOP 模块直接将面向”方面”的编程功能集成到了 Spring 框架中

Spring JDBC:这是由spring提供的一种dao层操作的技术.

Spring ORM: spring提供的一些ORM类型的框架如JDO,Hibernate 和 iBatis ,SQL Map

Spring MVC: 其实就是一中全功能的构建 Web 应用程序的 MVC 实现.

2,aop是什么?aop的作用?

AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如,加入日志,加入权限判断,加入异常处理,这种应用称为AOP。实现AOP功能采用的是代理技术,客户端程序不再调用目标类,而调用代理类,代理类再去调用目标类,而在代理类中加入上述系统功能的代码,代理类与目标类对外具有相同的方法声明,有两种方式可以实现相同的方法声明,一是实现相同的接口,二是作为目标的子类.这样就将目标类中的方法业务与系统功能代码分离.

3,什么是IOC?什么是 DI?

IOC:控制反转,对于对象的创建和销毁让容器进行管理,权限让spring IOC容器进行管理,IOC容器中主要使用"依赖注入"(DI)

对象的依赖关系让容器管理,程序猿不用关心类与类之间的依赖关系,把重心放到业务处理上.

DI:依赖注入

4,谈谈你对spring依赖注入的理解?以及有哪些常用的依赖注入?

构造方法注入:

(a)程序中提供一个构造器(依赖抽象)

  (b)在spring配置文件完成接口与实现的依赖关系

set方法注入:(开发中比较建议使用的一种注入方式)

    (1)类中提供一个属性与set方法,通过set方法把属性注入到spring容器中

(2)在配置文件中完成它们依赖关系

属性注入:

int类型注入String类型注入List类型注入Set类型注入:不能有重复值

Map类型注入数组类型注入:<list>实现properties注入:key value--->key--->value连接数据库中    

spring 继承(parent)注入:

(a)抽象继承类使用 abstract="true"

(b)子类继承 parent="父类Id"

5,jdo是什么

JDO(java data object)是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。使用jdo开发人员对于存储数据对象完全不需要额外的代码,这些繁琐的代码jdo已经进行了封转,另外,JDO很灵活,因为它可以在任何数据底层上运行,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。 

6,spring与ejb的区别

Spring是一中轻量级的框架,而EJB是一种重量级的框架(轻量和重量说的是框架的集成度[耦合度]) 

spring底层使用IOC容器(依赖注入)完成对象的实例化,完成bean的管理

EJB有两个bean:SessionBean[1,有状态的(性能耗费多,为其他bean服务)2,无状态的(消耗性能低)]EntityBean,EJB既是一种框架又是一种标准,EJB通过自己的容器(EJB容器)进行管理bean

Spring包含ejb的功能

7,spring的优点?

1,使框架集成解耦

2,提供对事物支持(spring的声明事物)

3,spring对bean的管理(单例/多例)

4,对流行框架支持(struts,struts2,webwork,jsf,hibernate,ibatis,flex[-->html5])

5,spring支持对hibernate session的管理(spring对其他框架(hibernate,ibtais)进行了二次封装,使得开发变得简单)

8,谈谈log4j的使用

添加类库,添加log4j的配置文件, 程序中的使用private Log  log = LogFactory.getLog(BookTest.class);log.xxx()

log4j级别有低到高:(分别对应5个方法)debug  info  warn  error  fatal

debug:调试模式info:普通信息

warn:警告信息error:错误信息(exception)fatal:严重错误信息(导致内存泄露)

开发模式中建议使用info级别,生产模式(部署上线后)建议使用error级别.

相关推荐