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级别.