**什么是 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
来源:https://www.cnblogs.com/WuJun-025/p/10533383.html