Spring基础面试

Spring的核心 IOC和AOP
IOC的一个重点是在系统运行中动态的向某一对象提供所需要的的对象.这一点需要DI的实现,比如对象A需要操作数据库,以前我们需要编写代码Connection 对象,有了Spring我们可以直接告诉他,A需要的Connection可以在适当的时候直接创建,再注入到A中.
IOC的工作原理
IOC采用工厂模式,通过读取application.xml配置文件中的bean标签,注入IOC容器中,再通过set或者构造方法注入产生Beanfactory,Beanfactory 通过getBean方法获取对象.
IOC和DI是一回事吗
IOC(inverse of controller) 控制翻转 DI(Dependency injection) 依赖注入 是一回事,只不过说的方面不同,IOC讲的是控制关系的转换,以前对象的赋值是由对象自己实现的,现在通过Spring利用反射机制来实现.
依赖注入的方法有什么
setter注入:通过反射调用setter方法
构造器方法:通过反射调用构造方法
接口注入: 通过接口调用接口中的普通方法
Spring的AOP 使用了aspectJ框架
说说什么是AOP,AOP的好处,动态代理怎么理解
AOP (aspect oriented programming) 面向切面编程
AOP的核心是实现动态代理,平常我们常见的是JDK使用innvocationHandle实现,还可以使用cglib来实现.Hibernate和Spring使用了cglib提供的实现.
动态代理实际上的意思是:动态生成代理类,这样我们可以控制代理类的代码.代理类的方法都会调用 invacationHandle接口中的invoke方法,这样的话,我们只要调用代理对象的方法,就会统一跑到invoke方法,然后我们可以在invoke方法对所有的方法做统一的预处理
AOP面向切面编程,是更高的编程思想,OOP侧重对象的封装和提取,AOP侧重方面组件,可以理解为封装了通用功能组件
Spring的通知类型
前置通知 后置通知 环绕通知 异常通知 环绕通知

Spring的核心类
BeanFactory:产生一个新的实例,可以实现单例模式
负责读取Bean配置文件管理Bean的加载实例化,维护Bean之间的依赖关系负责Bean的生命周期
BeanWrapper:提供了统一的get 和 set方法
ApplicationContext:提供框架的实现,包括BeanFactory的所有功能
ApplicationContext的FileSystemApplicationContext:从文件系统或URL指定的XML配置 文件创建,参数为配置文件名或数组
Spring 中Bean的作用域
Singleton prototype request session global session
Spring的事务管理
编程式事务管理 PlantformTransactionManager 这是一个Spring 提供的用于事务管理的基础接口,其下有一个实现的抽象类AbstractPlantformTransactionnManage,TransactionDefinition 事务属性定义和TransactionStatus
代表当前事务可以提交回滚
声明式事务管理
REQUIRED–支持当前事务,如果当前没有事务,就新建事务
REQUIRED_NEW–新建事务,如果当前存在事务,把当前事务挂起
SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行
NOT_SUPPORTS–以非事务方式执行操作,如果当前存在事务就把事务挂起
MANDATORY–支持当前事务,如果当前没有事务,就抛出异常
NEVER–以非事务方式运行,如果存在事务,则抛出异常
NESTED–如果当前存在事务,则在嵌套事务内执行.如果当前没有事务,则进行与REQUIRED类似的操作

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章