**什么是 spring?**
答:spring是个 Java企业级应用的开源开发框架。Spring主要用来开发 Java应用,可是有些扩
展是针对构建 J2EE平台的 web应用。
Spring框架目标是简化 Java企业级应用开发,并经过 POJO为基础的编程模型促进良好的编
程习惯
**使用 Spring框架的好处是什么?**
轻量:Spring是轻量的,基本的版本大约 2MB。
控制反转:Spring经过控制反转实现了松散耦合,对象们给出它们的依赖,而不是建立或查找
依赖的对象们。
面向切面的编程(AOP):Spring支持面向切面的编程,而且把应用业务逻辑和系统服务分开。
容器:Spring包含并管理应用中对象的生命周期和配置。
MVC框架:Spring的 WEB框架是个精心设计的框架,是 Web框架的一个很好的替代品。
事务管理:Spring提供一个持续的事务管理接口,能够扩展到上至本地事务下至全局事务
(JTA)。
异常处理:Spring提供方便的 API把具体技术相关的异常(好比由 JDBC,hibernateorJDO
抛出的)转化为一致的 unchecked异常。
**IOC的优势是什么?**
答:IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试再也不须要单例和
JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿
汉式初始化和懒加载
**spring的核心类有哪些?**
答:BeanFactory:产生一个新的实例,能够实现单例模式
BeanWrapper:提供统一的 get及 set方法
ApplicationContext:提供框架的实现,包括 BeanFactory的全部功能
**.spring的接口有哪些**
答:1.BeanFactory最基础最核心的接口
2.Resource接口,能够通用地访问文件资源
3.FactoryBean工厂 bean
4.MessageSource接口
**1.什么是 IOC**
答:1.IOC就是控制反转,就是将对象建立的权利交给 spring容器来完成。
今后程序员无需关注对象的建立过程。spring容器来维护对象的生命周期。
**2.什么是 AOP**
答:1.切面(Aspect):就是完成额外任务的类
2.链接点(Joinpoint):就是调用的目标方法
3.通知(Advice):切面中的方法
4.切入点(Pointcut):匹配链接点的断言。(执行通知的 if,就是一个匹配规则)
**3:解释 SpringBean的生命周期?**
答:在一个 bean实例被初始化时,须要执行一系列的初始化操做以达到可用的状态。一样的,当
一个 bean不在被调用时须要进行相关的析构操做,并从 bean容器中移除。
Springbeanfactory负责管理在 spring容器中被建立的 bean的生命周期。Bean的生命周期
由两组回调(callback)方法组成。
1.初始化以后调用的回调方法。
2.销毁以前调用的回调方法。
Spring框架提供了如下四种方式来管理 bean的生命周期事件:
InitializingBean和 DisposableBean回调接口
针对特殊行为的其余 Aware接口
Bean配置文件中的 Custominit()方法和 destroy()方法
@PostConstruct和@PreDestroy注解方式
**4:Spring框架中的单例 Beans是线程安全的么?**
答: Spring框架并无对单例 bean进行任何多线程的封装处理。关于单例 bean的线程安全和并
发问题须要开发者自行去搞定。但实际上,大部分的 Springbean并无可变的状态(好比 Serview
类和 DAO类),
因此在某种程度上说 Spring的单例 bean是线程安全的。若是你的 bean有多种状态的话(比
如 ViewModel对象),就须要自行保证线程安全。
最浅显的解决办法就是将多态 bean的做用域由“singleton”变动为“prototype”
**5.Spring注入对象有几种方式**
答:构造器注入,set注入,接口注入。3种方式。
谈谈 AOP中的代理
答:Spring中的 AOP内部集成了 jdk的动态代理和 cglib的动态代理。
使用 Spring的 AOP生成代理对象将不会再有代理对象原生的缺点。
spring中能够作到方法级别的代理。
**6.AOP的实现原理**
答:当获取对象时,首先将对象与切入点表达式进行匹配。若是匹配成功,
则会建立代理对象。而后代理对象执行方法时就会执行通知。
**7.spring事务的回滚策略**
答:1.运行时异常:
若是程序出现运行时异常,那么错误级别较高,spring会自动的回滚事务。
2.检查异常:
对于检查异常而言,spring认为检查异常是能够避免的,程序员 能够修复的,
那么 spring容器就不负责回滚检查异常
**8.Spring支持的事务管理类型**
答:Spring支持两种类型的事务管理:
编程式事务管理:这意味你经过编程的方式管理事务,给你带来极大的灵活性,可是难维护。
声明式事务管理:这意味着你能够将业务代码和事务管理分离,你只需用注解和 XML配置来
管理事务
**9.Spring框架的事务管理有哪些优势?**
答:它为不一样的事务 API如 JTA,JDBC,Hibernate,JPA和 JDO,提供一个不变的编程模式。
它为编程式事务管理提供了一套简单的 API而不是一些复杂的事务 API如
它支持声明式事务管理。
它和 Spring各类数据访问抽象层很好得集成
**10.解释 Spring支持的几种 bean的做用域。**
答:Spring框架支持如下五种 bean的做用域:
singleton:bean在每一个 Springioc容器中只有一个实例。
prototype:一个 bean的定义能够有多个实例。
request: 每 次 http请 求 都 会 创 建 一 个 bean, 该 做 用 域 仅 在 基 于 web的 Spring
ApplicationContext情形下有效。
session:在一个 HTTPSession中,一个 bean定义对应一个实例。该做用域仅在基于 web
的 SpringApplicationContext情形下有效。
global-session:在一个全局的 HTTPSession中,一个 bean定义对应一个实例。该做用域仅
在基于 web的 SpringApplicationContext情形下有效。
缺省的 Springbean的做用域是 Singleton程序员