spring MVC
1. spring基础知识
- 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以 在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道 的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。可以将简单的组件配置、组合成为复杂的应用.
- 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型 (prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的
- 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应 用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象 自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找 依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
- 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计、事务、日志、参数校验等管理)进行内聚性的开发。它们并不意识其它的系统级关注点。
2.项目中如何体现Spring中的切面编程,举例说明
@Aspect public class MyAspect { // 定义切入点。以描述需要在哪些对象的哪些方法上插入通知中定义的方法。 @Pointcut("execution(* com.xx.xx.api..*.*(..)) && @annotation(com.xx.xxx.common.annotation.YEWURPC)") public void rpcPointcut() { } @Around("rpcPointcut()") public Object around(ProceedingJoinPoint point) {} }
3. 谈谈mvc的理解
4.spring事务管理
项目中用到的Spring中的切面编程最多的地方:声明式事务管理。
a、定义一个事务管理器
<!-- transaction manager config -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dynamicDataSource" /> </bean>
b、配置事务特性(相当于声明通知。一般在业务层的类的一些方法上定义事务)
c、配置哪些类的哪些方法需要配置事务(相当于切入点。一般是业务类的方法上)
在Spring中,事务处理主要有两种方式
(1) 参数配置控制事务,在Application-Context.xml增加一个事务代理
count = new TransactionTemplate(transactionManager).execute(new TransactionCallback<Long>() {
@Override
public Long doInTransaction(TransactionStatus status) {
//插入系统操作记录表
try{}catch (Exception e){
status.setRollbackOnly();
}
}
});
5.spring 的优点
1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦
2.可以使用容易提供的众多服务,如事务管理,消息服务等
3.容器提供单例模式支持
4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能
5.容器提供了众多的辅助类,能加快应用的开发
6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等
7.spring属于低侵入式设计,代码的污染极低
8.独立于各种应用服务器
9.spring的DI机制降低了业务对象替换的复杂性
10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部
6.什么是DI机制
依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 。因此也称为依赖注入。 spring以动态灵活的方式来管理对象 , 注入的两种方式,设置注入和构造注入。
设置注入的优点:直观,自然
构造注入的优点:可以在构造器中决定依赖关系的顺序。
7.什么是AOP
面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面
1.面向切面编程提供声明式事务管理
2.spring支持用户自定义的切面
8.aop框架具有的两个特征
1.各个步骤之间的良好隔离性
2.源代码无关性
面向切面编程(aop)是对面向对象编程(oop)的补充。面向对象编程将程序分解成各个层次的对象,面向切面编程将程序运行过程分解成各个切面。
AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面,oop是静态的抽象,aop是动态的抽象, 是对应用执行过程中的步骤进行抽象,从而获得步骤之间的逻辑划分。