1. Spring 的工作原理与特性有哪些?
答:Sping的主要模块有:
1-1. Spring Core核心容器:提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开,BeanFactory是用来加载和管理Spring Bean definition的。(利用IoC模式将配置与代码分离)
1-2. Spring AOP:通过配置管理特性,Spring AOP模块直接将面向切面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。
1-3. Spring ORM:ORM是一类框架的总称,完成面向对象的程序设计语言到关系数据库的映射。 Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。
1-4. Spring DAO: Spring定义了一套面向DAO层的异常体系,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低 了需要编写的异常代码数量(例如,打开和关闭连接),并为各种支持的持久化技术提供了异常转换器。这样,我们在设计DAO接口时,就可以抛开具体的实现技术,定义统一的接口。Spring为不同持久化技术(jdbc,hibernate,ibatis,jpa,jdo,toplink)提供了不同的模板类
1-5. Spring WEB:Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。
1-6. Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。
1-7. Spring MVC:Spring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol
1. Spring bean 有几个作用域: singleton, protype, request, session
2. AOP Advice(AOP通知)分为六种: (其中AOP有基于XML Schema, 和基于annotation方式的)
2.1 前置通知beforeAdvice,
2.2 后置通知afterAdvice,
2.2.1 后置返回After returning Advice
2.2.2 后置异常After throwing Advice
2.2.3 后置最终After finally Advice
2.3 环绕通知aroundAdvice,
3. spring 的注入方式: 构造方法, setter方法(常用), 接口方法(不推荐)
4. <context:annotation-config/>开启对注解的支持.
5. <aop:aspectj-autoproxy/>来开启注解风格的@AspectJ支持;
6. AOP有三种植入切面的方法:
6.1: 编译期织入, 这要求使用特殊的Java编译器,AspectJ是其中的代表者.
6.2: 类装载期织入,而这要求使用特殊的类装载器,AspectJ和AspectWerkz是其中的代表者.
6.3: 动态代理织入,在运行期为目标类添加增强生 成子类的方式,Spring AOP采用动态代理织入切面.
7. Spring AOP使用了两种代理机制:
7.1: 一种是基于JDK的动态代理(只提供基于接口的代理, 不支持类代理)
7.2: 另一种是基于CGLib的动态代理(支持类的代理)
8. Spring一共分几块:
8.1 Spring core :提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。
BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序
分开。
8.2 Spring ORM: Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、
Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。
8.3. Spring Web: Web上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供
了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分
请求及将请求参数绑定到域对象的工作。
8.4. Spring AOP: 通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,
所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring
的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,
就可以将声明性事务管理集成到应用程序中。
8.5 Spring IoC:
8.6 Spring Context: Spring上下文是一个配置文件,向Spring框架提供上下文信息。
Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。
5、Rails中大量使用Convention over Configuration的思想,SpringMVC在2.0后也引入了CoC,请简单描述一下SpringMVC的CoC ??
1. Spring 事物隔离有五个不同的事务隔离级别
(default, committed, uncommitted, read, serializable)
1.1、ISOLATION_DEFAULT 使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应
1.2、ISOLATION_READ_COMMITTED (提交读)
保证一个事务修改的数据提交后才能被另外一个事务读取。
另外一个事务不能读取该事务未提交的数据。
这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读
1.3、ISOLATION_READ_UNCOMMITTED (未提交读)
这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
这种隔离级别会产生脏读,不可重复读和幻像读
1.4、ISOLATION_REPEATABLE_READ (重读)
这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务
不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)
1.5、ISOLATION_SERIALIZABLE (系列化)
这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
除了防止脏读,不可重复读外,还避免了幻像读
2. 事务的7种传播属性
(propagation_: required, requires_new, nested, supports, not_supported, mandatory, never)
2-1. PROPAGATION_REQUIRED, 加入当前正要执行的事务, 如果没有当前事务,那么就起一个新的事务,这是最常见的选择。
2-2. PROPAGATION_REQUIRES_NEW
2-3. PROPAGATION_NESTED
2-4. PROPAGATION_SUPPORTS
2-5. PROPAGATION_NOT_SUPPORTED
2-6. PROPAGATION_MANDATORY
2-7. PROPAGATION_NEVER
3、Spring 事物的特性:ACID
3.1 原子性(Atomicity) : 最小单位,不可分割,要么全做,要么不做.
3.2 一致性(Consistency): 事物执行前后,数据库数据都是正确的,一致的
3.3 隔离性(Isolation) : 多个事物之间不影响(依赖于事物的隔离属性)
3.4 持久性(Durability) : 事物一旦完成,即是永久保留的
4. 事务类型
4.1 按系统结构:本地事物, 分布式事务
4.2 按应用厂商:JDBC事务, JTA事务
4.3 按作用域 : 本地事务, 全局事务
4.4 按编程实现: 编程时事务, 声明式事务
Spring学习需要了解的意义:
1. AOP
2. AOP proxy
3. IoC , DI
4. ApplicationContext