疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

面试题Spring常见问题总结


 

21、自动检测Bean
为了配置自动检测,需要使用<context:component-scan>元素。默认情况下,<context:component-scan>使用构造型注所标注类。这些特殊的注解如下
@Component——通用构造型注解,标识该类为Spring组件
@Controller——标识将该类定义为SpringMVC controller
@Respository——标识将该类定义为数据仓库
@Service——标识将该类定义为服务
22、过滤组件扫描
通过为<context:component-scan>配置<context:include-filter>和/或者<context:exnclude-filter>子元素,可以调整扫描行为。
<context:include-filter type=”xxx” expression=”yyy”/>
 
23、关注点(concern)
1) 核心关注点: 关注系统的业务逻辑 --> OOP
2) 横切关注点: 关注系统级服务,比如事务、安全、日志 --> AOP
24、切面(aspect):
 把散落在系统各处与横切关注点相关的重复代码抽取出来归整到一处形成一个模块,我们称为切面.
25、连接点(joinpoint):
 程序运行过程中的某一点.比如方法调用、属性访问、异常抛出.
26、切入点(pointcut): 
一组连接点,注意: 如果要有选择性地拦截目标对象中的方法的话需要定义切入点
27、增强(advice)或者通知:
在不修改原有代码的前提下,为某一个对象增加新的功能 (如:事务服务、日志服务),在spring中增强是通过拦截器实现的.
28、织入(Weaving):
将切面应用到目标对象来创建新的代理对象的过程.
29、目标对象(target object):
需要被增强功能的对象称之为目标对象,也被称为被增强或被代理对象。
30、代理对象(proxy object)
为目标对象增加新功能从而产生的一个新的对象称为代理对象.负责调用拦截器和目标对象的方法.
31、Spring切面可以应用5 种类型的通知
l Before——在方法调用之前调用通知。
l After——在方法完成之后调用通知,无论方法执行是否成功。
l After-returning—— 在生方法成功执行之后调用通知。
l After-throwing——在方法抛出异常后调用通知。
l Around——通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。
32、织入的时机
l 编译期——切面在目标类编译时被织入。
l 类加载期——切面在目标类加载到JVM时被织入,这种方式需要特殊的类加载器,可以在目标类被引入应用之前增强该目标类的字节码
l 运行期——切面在应用运行的某个时刻被织入,一般情况下,在织入切面时,AOP容器会为目标对象动态地创建一个代表对象。
33、Spring提供的4种各具特色的AOP支持
l 基于代理的经典AOP。
l @AspectJ注解驱动切面。
l 纯POJO切面
l 注入式AspectJ切面(适合Spring各版本)。
34、Spring提供了在Spring上下中配置数据源Bean的多种方式
l 通过JDBC驱动程序定义数据源。
l 通过JNDI查找数据源。
l 连接池的数据源。
35、Spring为JDBC提供的模板类
l JdbcTemplate:最基本的Spring JDBC模板,这个模板支持最装简单的JDBC数据库访问功能及简单的索引参数查询。
l NamedParameterJdbcTemplate:使用该模板执行查询时,可以将查询值以命名参数的形式绑定到SQL中,而不是使用简单的索引参数。
l SimpleJdbcTemplate:该模板类利用Java5的一些特性,如自动装箱、泛型及可变参数来简化JDBC模板的使用。
36、Spring JDBC数据源
Spring提供了两种JDBC数据源对象。
DriverManagerDataSource :在每个连接请求时都会返回一个新建的连接。没有进数据池化管理。
SingleConnectionDataSource:在每个连接请求时都会返回同一个连接。
37、Spring为ORM框架提供的一些服务
l Spring声明式事物的集成支持。
l 透明的异常处理
l 线程安全的、轻量级的模板类。
l DAO支持类。
l 资源管理。
38、JPA两种类型的实体管理器
l 应用程序管理类型:当应用程序向实体管理器工厂直接请求实体管理器时,工厂会创建一个实体管理器,在这种模式下,程序要负责打开或关闭实体管理器并在事物中对其进行控制。这种方式的实体管理器适用于不运行在JavaEE容器中的独立应用程序。
l 容器管理类型:实体管理器由JavaEE创建和管理。应用程序不与实体管理器工厂打交道,实体管理器直接通过注入或者JNDI来获取。容器负责配置实体管理器工厂。这种类型的实体管理器最适合应用于JavaEE容器。
39、事务的四大特性
l 原子性:一个交易(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
l 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的默认规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
l 隔离性:当两个或者多个事务并发访问(此处访问指查询和修改的操作)数据库的同一数据时所表现出的相互关系。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(readcommitted)、可重复读(repeatable read)和串行化(Serializable)。
l 持久性:在事务完成以后,该事务对数据库所作的更改便持久地保存在数据库之中,并且是完全的。
40、Spring事务的支持
Spring提供了编码式事务管理和声明式事务管理。