Java面试--Spring技术要点--Spring概述

1、Spring的好处/特点

  • 轻量:Spring是轻量的,基本的版本大约2MB。
  • 控制反转(IOC):Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
  • 面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
  • 容器:Spring包含并管理应用中对象的生命周期和配置。
  • MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
  • 事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
  • 异常处理:Spring提供方便的API把具体技术相关的异常(比如由JDBC,Hibernateor JDO抛出的)转化为一致的unchecked 异常。

2、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-Struts module
  • Web-Portlet module

3、Spring IOC/DI(控制反转/依赖注入)

简单的理解就是,原先将本程序中所使用到的对象,的生命周期交给容器去维护和管理。这就是IOC。SpringIOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。

对于DI的理解是,本类中所使用到的其他对象,在程序代码中只需要声明一下,相关实例化的工作交给了容器,容器会在运行期new出相应的对象,并赋值给程序代码。这个过程类似于注入的过程。

http://blog.csdn.net/it_man/article/details/4402245

4、ApplicationContext的实现

  • FileSystemXmlApplicationContext:此容器从一个XML文件中加载beans的定义,XMLBean 配置文件的全路径名必须提供给它的构造函数。
  • ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。
  • WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。

5、BeanFactory和ApplicationContext的区别

  1. BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的Spring的配置问题。而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。这样,在容器启动时,我们就可以发现Spring中存在的配置错误。
  2. ApplicationContext建立在BeanFactory之上,并增加了其他的功能,比如更容易同SpringAOP特性整合, 消息资源处理(用于国际化),事件传递,以声明的方式创建ApplicationContext,可选的父上下文和与应用层相关的上下文(比如WebApplicationContext),以及其他方面的增强。

表格 1  BeanFactory和ApplicationContext对比


特性


BeanFactory


ApplicationContext


Bean实例化/装配


Yes


Yes


自动BeanPostProcessor注册


No


Yes


自动BeanFactoryPostProcessor注册


No


Yes


便捷的MessageSource访问(i18n)


No


Yes


ApplicationEvent发送


No


Yes

http://blog.csdn.net/hi_kevin/article/details/7325554

6、获取ApplicationContext的方式

  1. 直接new出ApplicationContext
  2. 通过Spring提供的工具类获取ApplicationContext对象(WebApplicationContextUtils)
  3. 继承自抽象类ApplicationObjectSupport。说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContextcontext)方法将ApplicationContext
    对象注入。
  4. 继承自抽象类WebApplicationObjectSupport。说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext
  5. 实现接口ApplicationContextAware

说明:实现该接口的setApplicationContext(ApplicationContextcontext)方法,并保存ApplicationContext 对象。Spring初始化时,会通过该方法将ApplicationContext对象注入。

http://www.blogjava.net/Todd/archive/2010/04/22/295112.html

时间: 2024-10-09 03:51:31

Java面试--Spring技术要点--Spring概述的相关文章

Java面试--Spring技术要点--Spring AOP(面向切面编程)

33  Spring AOP的概念 面向切面的编程,是一种编程技术,是OOP(面向对象编程)的补充和完善.OOP的执行是一种从上往下的流程,并没有从左到右的关系.因此在OOP编程中,会有大量的重复代码.而AOP则是将这些与业务无关的重复代码抽取出来,然后再嵌入到业务代码当中.常见的应用有:权限管理.日志.事务管理等. 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行:二是采用静态织入的方式,引入特定的语法创建"方面"

Java面试--Spring技术要点--Spring IOC

7  Spring IOC(依赖注入)的方式 Setter方法注入 构造器方法注入 工厂方法注入(实例工厂/静态工厂) 自动装配(需要开启配置,不建议使用) http://blessht.iteye.com/blog/1162131 8  IOC方式建议(构造器注入还是 Setter方法注入) 两种依赖方式都可以使用,构造器注入和Setter方法注入.最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖. 9  什么是Spring beans Springbeans是那些形成S

Java面试--Spring技术要点--Spring注解

20  基于Java的Spring注解配置(给一些注解的例子) 基于Java的配置,允许你在少量的Java注解的帮助下,进行你的大部分Spring配置而非通过XML文件. 以@Configuration注解为例,它用来标记类可以当做一个bean的定义,被SpringIOC容器使用.另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文.(一般很少用java代码对元数据进行配置) 21  Spring基于注解的容器配置.和开启配置 相对于XML文件,

Java面试--Spring技术要点--Spring数据访问

24  Spring对DAO的支持 Spring对数据访问对象(DAO)的支持旨在简化它和数据访问技术如JDBC,Hibernateor JDO 结合使用.这使我们可以方便切换持久层.编码时也不用担心会捕获每种技术特有的异常. 优化了的异常类型体系:细化了数据访问异常,丰富了异常类型.(都是 Unchecked Exception,这种异常不会变动,采用同一种异常,表示同一种现象,与使用的持久化技术无关) 使用模板回调模式,开发者不再写模式化代码,简化编程: 不变:资源的获取,资源的释放,异常转

Spring技术内幕——Spring的设计理念和整体架构

横看成岭侧成峰,远近高低各不同. 不识庐山真面目,只缘身在此山中. --苏轼 Spring的各个子项目 1.Spring Framework(Core):Spring项目的核心.包含了一系列IOC容器的设计,提供了反转模式的实现,同时还集成了AOP功能.另外,在Spring Framework中,还包含了其他Spring的基本模块,比如MVC.JDBC.事务处理模块的实现. 2.Spring Web Flow:建立在Spring MVC基础上的Web工作流引擎.定义了一种特定的语言来描述工作流,

Spring技术内幕——Spring Framework的IOC容器实现(一)

一.SpringIOC容器概述 IOC容器和依赖反转的模式 在面向对象的系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上.这些依赖关系可以通过把对象的依赖注入交给框架IOC容器来完成.他可以再解耦代码的同时提高了代码的可测试性. 依赖控制反转的实现由很多种方式,在Spring中,IOC容器是实现这个模式的载体,他可以再对象生成或者初始化时直接将数据注入到对象中,也可以通过将对象引用注入到对象数据域中的方式来注入对方法调用的依赖.这种依赖注入是可以递归的,对象被逐

2019最新JAVA学习路线-技术要点-面试题

——————————————————面试题———————————————————————————— 第一套 1.hadoop运行原理 包括HDFS和Mapreduce两部分. 1)HDFS自动保存多个副本,移动计算.缺点是小文件存取占用namenode内存,写入只支持追加,不能随机修改. 它存储的逻辑空间称为block,文件的权限类似linux.整体架构分三种节点,NN,SNN,DN NN 负责读写操作保存metadata(Ownership Permission blockinfo) SNN

Spring技术内幕——Spring Framework的IOC容器实现(二)

三.IOC容器的初始化过程 IOC容器的初始化时由前面介绍的refresh方法来启动的,这个方法标志着IOC容器的正式启动.这个启动包括BeanDefinition的Resource定位.载入和注册.下面我们将详细分析这三个实现过程,Spring把这三个过程分开,并使用不同的模块来完成,通过这样的设计让用户更加灵活的这三个过程进行剪裁和扩展,定义出最适合自己的IOC容器的初始化过程. 第一个过程: Resource定位过程,是指BeanDefinition的资源定位,他由ResourceLoad

Spring技术内幕——Spring Framework的IOC容器实现(三)

接上一篇的时序图.这里调用的loadBeanDefintions实际上是一个抽象方法,那么实际载入过程发生在哪里呢?在loadBeanDefintions中,初始化了读取器XMLBeanDefinitionReader,然后把这个读取器在IOC容器中设置好(过程和编程式使用XMLBeanFactory是类似的),最后是启动读取器来完成BeanDefinition在IOC容器中的载入,代码如下: /** * Convenient base class for {@link org.springfr