1,Spring的加载流程
初始化环境->加载配置文件->实例化Bean->调用Bean显示信息
2,Spring AOP的实现原理
AOP,面向切面编程,是OOP的补充和完善,OOP引入了封装,继承,多态性等建立一种对象层次结构(从上到下的关系),当需要为分散的对象引入公共行为的时候(从左到右的关系),OOP就显得无能为力。例如:日志功能,安全性,异常处理等,它们散布在所有对象层次中与对象的核心功能毫无关系,这种代码成为横切代码。在OOP设计中,会导致大量代码的重复不利于模块的重用
AOP和OOP相反,利用横切技术。将影响多个类的公共行为封装到一个可重用模块,称为Aspect,简单点就是将那些与业务无关,却被业务模块所公共调用的逻辑封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP的核心思想就是"将应用程序的商业逻辑同对其提供支持的通用服务进行分离"
Spring提供了两种方式生成动态代理对象:JDKProxy和Cglib具体使用哪种方式由AopProxyFactory根据AdvisedSupport对象的配置来决定,默认的策略是如果目标类是接口,使用JDK动态代理技术,否则使用Cglib
IOC控制反转,通过引入IOC容器,利用依赖注入的方式,实现对象之间的解耦。例如USB接口
3,Spring如何管理事务的
Spring事物管理主要包括3个接口,主要由以下三个共同完成的
1,PlatformTransactionManager:事物管理器,主要用于平台相关事务的管理。主要包括三个方法:①commit:事物提交 ②rollback:事物回滚 ③getTransaction:获取事物状态
2,TransactionDefinition:事物定义信息,用来定义事物相关属性。给事务管理器PlatformTransactionManager使用这个接口有下面四个主要方法:①getsolationLevel:获取隔离级别②getPropagaBehavior:获取传播行为③getTimeout获取超时时间④isReadOnly:是否只读
3,TransactionStatus:事物具体运行状态。例如:①hasSavePoint返回这个事务内部是否包含一个保存点②isCompleted返回该事务是否已完成,也就是说是否已经提交或回滚③isNewTransaction判断当前事务是否是一个新事务
4,Spring怎么配置事务(具体说出一些关键的xml 元素)
配置事务的方法有两种
1,基于XML的事务配置
数据元信息DataSource,管理事务的类txManager
2,基于注解方式的事务配置
@Transactional:直接在java源代码中声明事务的做法
注解事务,只需要在xml中配置一句
<!-- 配置注解事务 -->
<tx:annotation-driven transaction-manager="txManager"/>
在类上加一行 @Transactional