Spring 问与答

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 ORMORM是一类框架的总称,完成面向对象的程序设计语言到关系数据库的映射。 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 WEBWeb上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。

1-6. Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。

1-7. Spring MVCSpring的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 ??

 

http://www.cnblogs.com/rushoooooo/archive/2011/08/28/2155960.html
 

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                    和requires new不同的是,子,父事务一起提交。也就是说,如果父事务最后回滚,子事物也要回滚的
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
 
 
 
 

 

 

 

posted @ 2012-09-15 21:59  yql_dragonfly  阅读(234)  评论(0编辑  收藏  举报