spring框架面试
spring是开源的java ee框架,它是一个非侵入式的框架,引入组件对现有的类和结构没有影响,相当于一个平台,提供了扩展和整合的功能。并且是一个轻量化框架只有大概2MB.
1.核心模块core
核心模块是Spring的基本模块,它提供了Spring框架的基本功能。BeanFactory 是所有Spring应用的核心类。Spring框架是建立在这个模块之上的,这也使得Spring成为一个容器
2.context模块
spring context继承自beab factory 核心类。这个模块主要是对核心模块的扩展,丰富了一些功能。
3. 解释AOP模块
AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。
4.解释抽象JDBC和DAO模块
通过使用抽象JDBC和DAO模块保证了与数据库连接代码的整洁与简单,同时避免了由于未能关闭数据库资源引起的问题。它在多种数据库服务器的错误信息之上提供了一个很重要的异常层。它还利用Spring的AOP模块为Spring应用程序中的对象提供事务管理服务。
5.解释对象/关系映射集成模块
Spring通过提供ORM模块在JDBC的基础上支持对象关系映射工具。这样的支持使得Spring可以集成主流的ORM框架,包括Hibernate, 及Mybatis 。Spring的事务管理可以同时支持以上某种框架和JDBC。
6..解释web模块
Spring的web模块建立在应用上下文(application context)模块之上,提供了一个适合基于web应用程序的上下文环境。该模块还支持了几个面向web的任务,如透明的处理多文件上传请求及将请求参数同业务对象绑定起来。
7.解释Spring MVC模块
Spring提供MVC框架构建web应用程序。Spring可以很轻松的同其他MVC框架结合,但Spring的MVC是个更好的选择,因为它通过控制反转将控制逻辑和业务对象完全分离开来。它围绕着DispatcherServlet展开,浏览器客户端通过http发送请求给servlet,通过controller调用service处理请求后,再将结果返回给视图层。
A. Spring IoC容器:
IOC控制反转,负责创建对象、管理对象(通过依赖注入)整合对象、配置对象以及管理这些对象的生命周期。
a.IOC有什么优点?
IOC或依赖注入减少了应用程序的代码量。它使得应用程序的测试很简单,因为在单元测试中不再需要单例或JNDI查找机制。简单的实现以及较少的干扰机制使得松耦合得以实现。IOC容器支持勤性单例及延迟加载服务。
B. Spring中的依赖注入是什么?DI
依赖注入作为控制反转(IOC)的一个层面,通过IOC创建对象的时候把对象和依赖关系注册给spring,可以注入字符串甚至其他对象。 然后在运行期由spring自动实现对象关系的注入。比如DAO就会注入session factory.
C. 有哪些不同类型的IOC(依赖注入)?
a.构造器依赖注入:构造器依赖注入在容器触发构造器的时候完成,该构造器有一系列的参数,每个参数代表注入的对象。
b. Setter方法依赖注入:首先容器会触发一个无参构造函数或无参静态工厂方法实例化对象,之后容器调用bean中的setter方法完成Setter方法依赖注入。
c. 注解实现。现在基本主要用注解来完成的,因为代码量少,省事儿。方便svn整合,不会出现多个人同时操作一个配置文件的情况。
D. AOP面向切面编程
基本功能是:在某个方法运行之前或者之后固定的代码。比如service层的事物保护,它的原来的步骤是:开启事物―执行业务操作―然后提交回滚。开启事物和提交回滚是固定代码可以提取出来进行封装。aop就是针对这样的业务进行处理的。经过spring配置后,service层方法只写业务处理就行。相似的业务还有 记录日志,记录性能,异常处理等等切面业务。
E. 框架中事物是怎么进行配置的
a. 事物用aop配。首先注册目标类service 然后配置事务管理器,就是spring自带的切面类。然后配置一个事务拦截器。最后用aop:config 进行整合。
F. 框架中哪里用到了ioc和aop
a. 控制层 业务层 持久层 三层注入。
b. service加入日志和事物管理用了aop
G. spring xml配置了什么
我们用的spring 分两部分,与mybites整合。
aop事务支持。
1.首先配置数据源,用的是连接池组件c3p0
2.配置sql sessionFactory工厂,注入数据源以及加载Mybatis sql文件。
3.配置MapperScanner 用来注册mybatis接口以及注入sqlSessionFactory
H. 说说公司框架
1.用的是ssm版本都是3.2版本。
ssh的配置:
a.配置一个spring mvc.xml,引入包信息,扫描控制器,设置文件上传大小,给定前后坠。
b.在web xml中配置一个编码filter。然后配一个servlet加载spring mvc xml和url *.do.
webxml中,加载spring.xml文件,配置监听器,配置servlet加载springmvc xlm文件,配置一个filter文件编码。
spring mvc.xml中,扫描控制器,设置文件上传大小,指定前后坠名。
spring.xml中,扫描service路径,连库配置用cp30组件,配置数据源路径,数据源中存放连库信息(连库协议啊,密码啊之类的,等待时间,数据库连接池信息)
整合mybatis:
配置一个核心模块,加载splSession工厂获取数据源dateSource。
配置一个放接口的包路径。com.mapper
配置事物管理器。
配置拦截器,用正则来控制所有的service 接口的实现类,拦截业务。