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 基础概念、
反向控制/依赖注册:
反向控制:
依赖注册:
三种注入方式: 接口注入 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实现新闻发布系统实例
1接口介绍1.1IobjectFactoryIObjectFactory是初始化、配置及管理对象的实际容器(按:它是所有容器的父接…
Spring春天Spring主要的两个功能:IOC控制反转/依赖注入AOP面向方面变成Spring是完全面向接口的设计,主要管理H…
SpringSpring基本配置1.spring的依赖包配置a)SPRING_HOME/dist/spring.jarb)SPRI…
传统的J2EE应用中,事务管理是跟EJB绑定在一起来的,那个时候大部分人使用EJB的LocalSLSB仅仅是为了使用它的声明式事务…
Springbeanfactory:?BeanFactory是产生和管理bean的容器?Tomcat可以看成是一个bean的容器S…
《Spring从入门到精通》的总结第一部分Spring入门第一章Spring概述总体上讲解了Spring框架第二章开始Spring…
一.Spring的作用1.帮助我们产生对象2.帮助我们管理对象3.帮助我们管理对象之间的关系二.Spring配置文件的读取方式(1…
30.31.32.33.34./entryentrykey=map3refbean=student//entry/map35./p…
Spring学习一、Spring框架的相关介绍1.1、Spring框架的作用:Spring是一个容器性质的框架.可以管理Bean对…
1.你是如何理解控制反转和依赖注入的?Don’tcallme,wewillcallyou.你需要的对象以及这些对象依赖的其他对象都…
从开始的店面装修到现在店面的运营基本正常也可以说收获的点点滴滴都印在脑海里。从开始店面的装修自己就什么都不懂,但是事情不去做总也不…