Spring 要点总结

Spring 要点总结

一、AOP(Aspect-Oriented Programming): 面向层面(方面)编程

1、 代理的两种方式:

静态代理:

? 针对每个具体类分别编写代理类;

? 针对一个接口编写一个代理类;

动态代理:

针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类

2、 AOP的主要原理:动态代理(Spring的AOP中主要用到代理模式及修饰模式)

3、 AOP中的术语:

? Aspect:方面,层面

? Joinpoint:结合点、联结点、执行点;加入业务流程的点或时机;

? Pointcut:切入点、作用点;加入建议的点,指定某个方面在哪些联结点织入到应用程序中(一系列的

执行点的组合);

? Advice:通知、行为、建议;某个方面的具体实现(在一系列执行点上加入的功能或行为);

? Advisor:由Pointcut和Advice共同构成;

? Introduction:引入;动态的在一些类中加入方法或成员;

? Weaving:织入;针对一系列的执行点加入功能或建议的行为(Spring只针对方法一级做动态织入)

4、 Pointcut:Spring根据类名称及方法名称定义Pointcut,表示Advice织入至应用程序的时机;匹配方法时既

可是动态的、也可是静态的(动态的要检查方法的参数)org.springframework.aop.Pointcut

5、 ProxyFactoryBean:用来创建代理对象

<bean id="proxy" class="org.springframework.aop.framework.ProxyFactoryBean">

<property name="target">

<ref bean="target bean"/>

</property>

<property name="proxyInterfaces">

<list>

<value>interfaces of target bean implemented</value>

</list>

</property>

<property name="interceptorNames">

<list>

<value>Advice/Advisor bean</value>

</list>

</property>

</bean>

创建代理对象需指定的三要素:

? target:设定目标对象(只能是一个);

? proxyInterfaces:设定代理接口(目标对象所实现的接口);

? interceptorNames:设定拦截器的名字(各个advice或advisor bean的列表)

6、 Advice:五种(根据织入的时机不同而划分)

? Before Advice:在目标对象的方法执行之前加入行为;

要实现的接口:org.springframework.aop.MethodBeforeAdvice

? After Advice:在目标对象的方法执行之后加入行为;

要实现的接口:org.springframework.aop.AfterReturningAdvice

? Throw Advice:在目标对象的方法发生异常时加入行为

要实现的接口:org.springframework.aop.ThrowsAdvice

? Around Advice:在目标对象的方法执行前后加入行为

要实现的接口:org.aopalliance.intercept.MethodInterceptor

? Introduction Advice:引入的行为(增加了可操作的方法)

1. 声明要添加的功能接口;

2. 创建引入Advice;

(继承org.springframework.aop.support.DelegatingIntroductionInterceptor,并实现添加的功能接口)

3. 在配置文件中定义一个DefaultIntroductionAdvisor的bean

(需要两个构造方法的参数:Advice和添加的功能接口)

7、 PointcutAdvisor:Pointcut定义了Advice的应用时机;在Spring中,使用PointcutAdvisor将Pointcut和Advice

结合为一个对象

? NameMatchMethodPointcutAdvisor:可用来指定Advice所要应用的目标对象上的方法名称

<bean id="nameAdvisor" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor"> <property name="mappedName">

<value>do*</value>

</property>

<property name="advice">

<ref local="AdviceBeanName"/>

</property>

</bean>

? RegexpMethodPointcutAdvisor:可使用Regular expression定义Pointcut,在符合Regular expression的情

况下应用Advice,其pattern属性用来指定所要符合的完整类名(包括 package名称)及方法名;定义该属性时可使用的符号包括:

<bean id="regexpAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">

<property name="pattern">

<value>.*do.*</value>

</property> <property name="advice">

<ref local="AdviceBeanName"/>

</property>

</bean>

8、 AutoProxy:自动代理

? BeanNameAutoProxyCreator:根据bean的名字为其自动创建代理对象,bean工厂自动返回其代理对象: <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

<property name="beanNames">

<list>

<value>beanName</value>

</list>

</property>

<property name="interceptorNames">

<list>

<value>Advice/Advisor Bean Name</value>

</list>

</property>

</bean>

? DefaultAdvisorAutoProxyCreator:自动将Advisor应用到符合Pointcut的目标对象上

<bean id="regexpAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">

<property name="pattern">

<value>.*do.*</value>

</property>

<property name="advice"><ref local="AdviceName"/></property>

</bean>

<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"/>

二、Spring的Web MVC:

1、DispatcherServlet:作为前端控制器,负责分发客户的请求到Controller; 在web.xml中的配置如下: <servlet>

<servlet-name>mvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/mvc-servlet.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>mvc</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

2、Controller:负责处理客户请求,并返回ModelAndView实例;

Controller必须实现接口org.springframework.web.servlet.mvc.Controller,实现该接口中的方法handleRequest(),在该方法中处理请求,并返回ModelAndView实例

3、HandlerMapping:DispatcherServlet根据它来决定请求由哪一个Controller处理;

? 默认情况下,DispatcherServlet将使用org.springframework.web.servlet.handler.

BeanNameUrlHandlerMapping,即使用和客户请求的URL名称一致的Controller的bean实例来处理请求;

? 另外一种常用的HandlerMapping为org.springframework.web.servlet.handler. SimpleUrlHandlerMapping,

配置如下:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<prop key="/add.do">add</prop>

</props>

</property>

</bean>

在以上“mappings”属性设置中,“key”为请求的URL,而“value”为处理请求的Controller的bean名称

4、ModelAndView:用来封装View与呈现在View中的Model对象;

DispatcherServlet根据它来解析View名称,并处理呈现在View中的Model对象

5、ViewResolver:DispatcherServlet委托ViewResolver来解析View名称; 常用的ViewResolver实例配置如下: <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix">

<value>/</value>

</property> <property name="suffix"> <value>.jsp</value> </property> </bean>

三、Spring Data Access

1、Template 2、DaoSupport 3、TransactionManager 4、TransactionProxy 5、用hibernate实现Dao并使用声明的事务服务的步骤: 1)创建实体; 2)定义Dao; 3)定义商业服务接口Biz; 4)实现Dao和Biz; a、extends HibernateDaoSupport implements Dao; b、Biz使用Dao; 5)配置Spring的BeanFactory: a、配置DataSource;

b、配置Hibernated的SessionFactory;

(LocalSessionFactoryBean,注入DataSource)

c、配置Dao,注入SessionFactory; d、配置BizTarget,注入Dao; e、配置TransactionManager;

(HibernateTransactionManager,注入SessionFactory)

f、配置Biz;

(TransactionProxyFactoryBean,

注入TransactionManager,BizTarget,transactionAttributes)

* 事务属性:PROPAGATION_REQUIRED,timeout=10,readonly,+AppException

事务的传播属性、事务的超时时间、是否是只读的、需回滚事务的异常

 

第二篇:spring总结

《Spring 从入门到精通》的总结

第一部分 Spring 入门

第一章 Spring概述

总体上讲解了Spring框架

第二章 开始Spring之

讲述了一个简单的Spring实例

第二部分Spring 技术祥解

第三章 Spring 基础概念、

反向控制/依赖注册:

反向控制:

依赖注册:

三种注入方式: 接口注入 Set注入 构造注入

实例演示:

使用哪种注入方式:

第四章 Spring 核心容器

bean的定义及功能:

bean 的基础知识 : id class Singleton depends-on

bean的属性 null

bean 的生命周期 : 定义 初始化(2) 使用

销毁(2)

ref的属性指定依赖的三种模式 : local Bean Parent

比较 bean自动装配模式:byName byType constructor autodetect no

总结

bean依赖检查模式:simple object all none 总结

集合注入方式 : List Set Map Properties 总结

bean 管理 : 使用BeanWrapper管理 Bean 使用BeanFactory

管理Bean

使用ApplicationContext管理Bean

ApplicaitonContext更强的动能 : 国际化支持 资源访问

事件传递

第五章 Spring 的 AOP

AOP基本思想:认识 AOP AOP与OOP对比分析

AOP与JAVA的代理机制

输出日志的是实例代码:通用的日志输入方法 通过

面向接口编程实现日志输出 用java的代理机制进行日志输出 Aop的三个关键概念: 切入点(Pointct) 通知(Advice) Advisor Spirng的三种切入点: 静态切入点 动态切入点 自定义切入

点 SPring的通知(ADvice): Interception

Around通知 Before通知 after Returning通知 Throw通知 Introduction通知 Spring 的Advisor : 用

PROXYFACTORYBEAN创建AOP :使用PROXYFACTORYBEAN代理目标类的所有方法 使用PROXYFACTORYBEAN代理目标类指定方法 正则表达式 简介

把输出日志的实例改写成用SPRING的AOP 来实现: 采用 INTERCEPTION AROUND通知的形式实现 采用BEFORE通知的形

式实现采用AFTER RETURNING通知的形式实现 采用THROW通知

形式实现 SPRNG 中的良种代理方式: JAVA 动态代理

CGLIBE代理 SPRING中的自动代

理: AOP 的实

例:

第六章 Spring 事务处理

简述事务处理: 事务的基本概念 事务的处理特性

事务处理的三种注入方式:关系型数据库事务处理 传统的JDBC事务

处理

分布式事务处理

Spring 的事务处理: Spring 事务处理概述 编程式事务处理

声明式事务处理

用编程式还是声明式事务处理:

第七章 Spring 持久层封装

传统的JDBC数据库访问技术 :

通过XML实现DataSource注入 :使用DBCP连接池

使用Spring自带的DriverManagerDataSource 使用Tomcat提

供的 JNDI

使用JdbcTemplate访问 : 数据 Template模式简

事务处理TransactionTtemplate的实现方式 JdbcTempate

的实现方式

使用JdbcTemplate查询数据库 使用

JdbcTemplate更改数据库

使用ORM工具访问数据:ORM简述 使用Hibernate 使用iBatiks

第八章 Spring 的WEB框架

第九章 Spring 的定时器

定时器简述 :

定时器的两种实现方式 :

Timer Quartz 两种方式的比较

利用Spring简化定时任务的开发 :在Spring 中使用Timer实现定时器

在Spring中使用Quartz实现定时器

第三部分 Spring与其他工具整合应用

第十章 Spring与Struts的整合

Struts介绍 : Struts的历史 Struts体系结构

Struts的下载: 下载Struts 配置Struts

Jsp页面的 Struts实例:

Struts的主要类 :ActionServlet Action ActionMapping ActionForm

DispatchAction

国际化支持:

Struts的自定义的标签 : Bean标签 Logic标签 Html标签 Spring 与Struts整合: 通过 Spring的ActionSupport类

通过 Spring 的DelegatingRequestProcessor类 通过Spring的DelegatingActionProxy类 比较三种整合方式

编写一个注册的例子:

第十一章 Spring 与Hibernate的整合

Hibernate 介绍:

Hibernate的下载 和配置:下载Hibernate 配置Hibernate

编写一个Hibernate的简单的实例:

Hibernate的配置:

Hibernate的映射:集合映射 组件映射 关联映射 继承映射 Hibernate 的工具:

Hibernate的几个主要简介: Configuration (管理Hibernate) SessionFactory( 创建 Session) Session(提供Connection)

通过XML来整合Spring和Hibernate :

用Struts , Hibernate ,Spring 编写一个实例 :

第十二章 在Spring 中使用Ant

第十三章 在Spring 中使用Junit

第四部分 Spring实例

第十四章 用Spring实现新闻发布系统实例

相关推荐