1.什么是Spring?
Spring是个企业级应用的开源开发框架。Spring主要用来开发java应用,但是一些扩展是针对于J2EE平台的web应用。Spring框架目标是简化java企业级应用的开发,并通过POJO为基础的编程模型促进良好的编程习惯。
2.使用Spring框架的好处是什么?
轻量:Spring是轻量的,基本的版本大约2MB
控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或者查找依赖的对象们。
面向切面的编程(AOP):Spring支持面向切面编程,并把应用业务逻辑和系统服务分开
容器:Spring包含并管理对象的生命周期和配置
MVC框架:Spring的Web框架是个精心设计的框架,是Web框架一个很好的替代品
事务管理:Spring提供了一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)
异常处理:Spring提供方便的API把具体技术相关的异常转化为一致的unchecked异常.
3.Spring由哪些模块组成?
以下是Spring的模块组成
- Core module
- Bean module
- Context module
- Expression Language module
- JDBC module
- ORM module
- OXM module
- Java Messaging Service(JMS) module
- Transaction module
- Web module
- Web-Servlet module
- Web-Structs module
- Web-Portlet module
4.核心容器(应用上下文模块)
这是基本的Spring模块,提供spring框架的基本功能,BeanFactory任何以spring为基础的应用的核心。
Spring框架建立在此模块之上,它使Spring成为一个容器。
5. BeanFactory -BeanFactory的实现举例
Bean工厂是工厂模式的一个实现,提供了控制反转的功能,用来把应用的配置和依赖从真正的应用代码中分离。
最常用的BeanFactory实现是XmlBeanFactory类
6.XmlBeanFactory
最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory,它根据xml文件中的定义加载beans。
该容器从xml文件读取配置元数据并用它去创建一个完全配置的系统或应用。
7.解释AOP模块
AOP模块用于发给我们的Spring应用做面向切面的开发,很多支持由AOP联盟提供的,这就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring.
8.解释JDBC抽象和DAO模块
通过使用JDBC抽象和DAO模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。它还利用Spring的AOP模块给Spring应用中的对象提供事务管理服务。
9.解释对象/关系映射集成模块
Spring通过提供ORM模块,支持我们直接在JDBC智商使用一个对象/关系映射(ORM)工具。Spring支持主流的ORM框架,如Hibernate,JDO和iBATIS SQL MAPS。Spring的事务管理同样支持以上所有ORM框架以及 JDBC。
10.解释WEB模块
Spring的Web模块是构建在application context 模块的基础之上的,提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务,如透明的处理多个文件上传请求和程序级请求参数绑定到你的业务对象。
11.Spring的配置文件
Spring的配置文件是个xml文件,这个文件中包含了类信息以及如何配置它们,以及如何相互调用
12.什么是Spring IOC容器
Spring IOC 负责创建对象,管理对象(通过依赖注入)装配对象,配置对象,并且管理这些对象的整个生命周期。
13.IOC的优点是什么
IOC或依赖注入 把应用代码的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI的查找机制。最小的代价和最小的侵入性使得松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。
14.ApplicationContext通常的实现是什么?
- FileSystemXmlApplicationContext:此容器从一个xml文件中加载beans的定义,xml bean配置文件的全路径名必须提供给它的构造函数
- ClassPathXmlApplicationContext:此容器也从一个xml文件中加载beans的定义,这里我们需要正确设置classpath,因为这个容器将在classpath找bean配置
- WebXmlApplicationContext:此容器加载一个xml文件,此文件定义了一个web应用的所有bean。
15.什么是Spring的依赖注入
依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这个概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里面直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。
16.有哪些不同类型的DI(依赖注入)方式?
-
构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖
-
Setter方法注入:Setter方法注入是容器通过调用无参构造器或者是无参static工厂方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。
-
@Autowired注解的使用
17.哪种依赖注入的方式建议你使用
最好的方案是用构造器参数实现强依赖,setter方法实现可选依赖
网友评论