Spring讲解Word文档下载推荐.docx

上传人:b****6 文档编号:16974765 上传时间:2022-11-27 格式:DOCX 页数:15 大小:281.90KB
下载 相关 举报
Spring讲解Word文档下载推荐.docx_第1页
第1页 / 共15页
Spring讲解Word文档下载推荐.docx_第2页
第2页 / 共15页
Spring讲解Word文档下载推荐.docx_第3页
第3页 / 共15页
Spring讲解Word文档下载推荐.docx_第4页
第4页 / 共15页
Spring讲解Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Spring讲解Word文档下载推荐.docx

《Spring讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Spring讲解Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

Spring讲解Word文档下载推荐.docx

对Bean工厂的扩展ApplicationContext更加方便我们实现JavaEE的应用;

DAO/ORM的实现方便我们进行数据库的开发;

WebMVC和SpringWeb提供了JavaWeb应用的框架或与其它流行的Web框架进行集成。

二、IoC(InversionofControl)

控制权由对象本身转向容器;

由容器根据配置文件去创建实例并创建各个实例之间的依赖关系。

1、定义:

组件之间的依赖关系由容器在运行时决定。

JavaBean

调用/包含

Spring

例如:

B对象所依赖的A对象是由Spring创建好并且通过Set方法传递注入过来的。

最基本的优点体现在:

若A为接口,让B依赖于接口。

只看接口不管实现类。

可把工厂类全部替换掉。

对象均为容器创建。

到时还能把容器的功能融入到其中。

IoC要求:

容器尽量不要侵入到应用程序中去,应用程序本身可以依赖于抽象的接口,容器根据这些接口所需要的资源注入到应用程序中,也就是说应用程序不会主动向容器请求资源;

容器会自动把这些对象给应用程序。

IoC有基于Set方式的注入(property)、基于构造方法的注入。

IoC核心:

bean工厂。

在Spring中,bean工厂创建的各个实例称作bean。

业务组件间的依赖是容器(Bean工厂)解决的。

BeanFactory负责读取Bean定义文件,管理对象的加载、生成,维护Bean对象与Bean对象的依赖关系,负责Bean的生命周期,对于简单的应用程序来说,使用BeanFactory就已经足够来管理Bean,在对象的管理上就可以获得许多的便利性。

Spring中有两个包里的类都可以做IoC:

beans包:

org.springframework.beans包;

context包:

org.springframework.context包 其类功能更加强大。

2、bean工厂创建bean的三种方式:

✧通过构造方法直接创建:

<

beanid=””class=”beanclassname”>

✧通过静态工厂方法创建:

beanid=””class=”factoryclassname”factory-method=””>

✧通过非静态工厂方法创建:

beanid=”factory”class=”factoryclassname”>

beanid=””factory-bean=”factory”factory-method=””>

3、Spring中实现IoC的方式:

依赖注入(DependencyInjection)

Spring中依赖注入的两种方式:

Ø

通过setter方法注入:

propertyname=””>

<

/property>

其中,name属性的取值依setter方法名而定。

Spring推荐使用setter方法注入

通过构造方法注入:

constructor-argindex=”0”>

/constructor-arg>

constructor-argtype=”int”>

其中,index表示构造方法中的参数索引(第一个参数索引为0),type表示构造方法中参数的类型。

●两种注入方式的区别:

⏹Constructor:

可以在构建对象的同时,把依赖关系也构建好。

对象创建后好就已经准备好了所有的资源,安全性高。

⏹Setter:

创建完对象之后再通过set()方法进行属性的设定。

4、设置属性时可选的标签:

value:

基本类型(包装类型)或String类型

ref:

引用工厂中其它的bean

list:

List或数组类型

set:

Set类型。

用法与list类似。

map:

Map类型

props:

Properties类型,键值为String类型的,所以直接写值。

 

举例:

ListSet

MapProperties

如果key依赖其它对象用key-ref,如果还是一个Map,可再嵌套。

◆abstract属性

如果在配置文件中把某个方法设置成为abstract=“true”的(缺省false),那么不能通过beanFactory获得bean的实例。

◆lazy-init属性

如果使用的是XmlBeanFactory来获得beanFactory:

缺省的是延迟加载,如果不想延迟加载,则需要把工厂bean实例的lazy-init设置为false,例如:

beanid=“carFactory"

lazy-init="

false"

class="

spring.ioc.CarFactory"

>

/bean>

5、自动装配:

自动将某个bean注入到另一个bean的属性当中。

(bean标签的autowire属性)其分类如下表:

(大型应用不推荐使用,因为可读性太差)

模式

说明

No

不使用自动装配。

必须通过ref元素指定依赖,这是默认设置。

由于显式指定协作者可以使配置更灵活、更清晰,因此对于较大的部署配置,推荐采用该设置。

而且在某种程度上,它也是系统架构的一种文档形式。

byName

根据属性名自动装配。

此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。

例如,在bean定义中将autowire设置为byname,而该bean包含master属性(同时提供setMaster(..)方法),Spring就会查找名为master的bean定义,并用它来装配给master属性。

byType

如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。

如果存在多个该类型的bean,那么将会抛出异常,并指出不能使用byType方式进行自动装配。

若没有找到相匹配的bean,则什么事都不发生,属性也不会被设置。

如果你不希望这样,那么可以通过设置dependency-check="

objects"

让Spring抛出异常。

constructor

与byType的方式类似,不同之处在于它应用于构造器参数。

如果在容器中没有找到与构造器参数类型一致的bean,那么将会抛出异常。

autodetect

通过bean类的自省机制(introspection)来决定是使用constructor还是byType方式进行自动装配。

如果发现默认的构造器,那么将使用byType方式。

6、依赖检查:

检查bean的属性是否完成依赖关系的注入

(bean标签的dependency-check属性)

⏹作用:

⏹分类:

①.simple:

只查看简单的类型是否完成依赖注入(基本类型和字符串)

②.objects:

检查对象类型是否完成依赖注入

③.all:

检查全部的类型是否完成依赖注入。

 ④.none:

默认的设置,表示不检查依赖性。

7、生命周期方法:

init-method(也可实现接口org.springframework.beans.factory.InitializingBean)

destroy-method(也可实现接口DisposableBean)

beanname="

view"

ioc.beanfactory.CommanLineView"

autowire="

byType"

init-method="

init"

scope="

prototype"

8、单例bean:

默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性)

beanid="

dateFactory"

ioc.beanfactory.DateFactory"

singleton="

/>

9、Aware相关接口:

可以通过实现Aware接口来获得Spring所提供的资源或使用某些功能。

●org.springframework.beans.factory.BeanNameAware此接口用得不多

实现BeanNameAware接口的Bean类,在依赖关系设定完成后、初始化方法之前,会将Bean在定义文件中的名称通过setBeanFactory()方法设定给Bean。

●org.springframework.beans.factory.BeanFactoryAware要重视

  实现BeanFactoryAware接口的类,在依赖关系设定完成后、初始化方法之前,Spring容器将会注入BeanFactory的实例。

放弃一些反向控制,在需要B对象时再根据需要

●org.springframework.context.ApplicationContextAware

10、ApplicationContext的功能扩展:

  org.springframework.context.ApplicationContext,其基本功能与BeanFactory很相似,还提供一个应用程序所需的更完整的框架功能。

提供取得资源文件更方便的方法、提高文字消息解析方法、支持国际化消息等。

①.BeanPostProcessor:

若想在Spring对bean完成依赖注入之后,再补充一些后续操作,则可以定义一个bean类来实现接口:

org.springframework.beans.factory.config.BeanPostProcessor,然后在配置文件中定义该bean类;

从而Spring容器会在每一个bean被初始化之前、之后分别执行实现了该接口的bean类的postProcessBeforeInitialization()方法和postProcessAfterInitialization()方法;

②.BeanFactoryPostProcessor:

对Bean工厂修改其它支持。

●CustomEditorConfigurer:

可借助实现了接口java.beans.PropertyEditor的类,并依据当中的实现,将字符串类型转换为指定类型的对象;

●PropertyPlaceholderConfigurer:

可将配置文件中属性值用“${key}”形式表示,则会将其值替换成指定的属性文件中key所对应的value;

●PropertyOverrideConfigurer:

可借助该类在指定的属性文件中设定一些优先的属性(将忽略配置文件中对应属性的设定值);

(注意:

属性文件中设定属性值的格式为:

beanName.propertyName=value)

③.国际化消息的支持:

可通过ApplicationContext(继承于MessageSource)的getMessage()方法获得指定资源文件中的消息;

配置如下:

④.事件的支持:

可发布的事件:

ApplicationEvent

发布事件的方法:

publishEvent(ApplicationEvent)

事件监听接口:

ApplicationListener

11、ApplicationContext管理bean的执行阶段:

(他回预先实例化所有的singletonbean)

●创建bean;

●属性注入(依赖关系的注入);

●BeanNameAware接口实现类的setBeanName()方法;

●BeanFactoryAware接口实现类的setBeanFactory()方法;

●ApplicationContextAware接口实现类的setApplicationContext()方法;

●BeanPostProcessor接口实现类中的postProcessBeforeInitialization()方法;

(init方法调用前要做的后续操作)

●InitializingBean接口实现类的afterPropertiesSet()方法;

●Bean定义文件中init-method属性所指定的方法;

●BeanPostProcessor接口实现类中的postProcessAfterInitialization()方法;

12、FactoryBean:

用来创建bean

通过bean工厂的getBean(“myObject”)得到的是FactoryBean所生产的产品;

getBean(“&

myObject”)得到的是FactoryBean实例本身)

三、AOP(Aspect-orentedprogramming)面向层面编程重点、难点

1、AOP学习目标:

使所需要的功能能够加在任何类中,而不需要调用。

①借助于Spring编写一个自己的切面,加到任何一个Java中;

②Spring本身也提供了编写好的切面功能。

切面有最大程度的复用性,耦合度趋于零。

在事务方面,AOP用得较成功。

2、代理的两种方式:

◆静态代理:

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

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

◆动态代理:

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

AOP的主要原理:

动态代理 研究一下动态代理的写法。

3、AOP中思想和名词术语:

根据

Pointcuts

LogHandler

SecurityHandler

Weave

具体设计为Advices

Logging

Aspects

Jointpoint

被辨认为

Cross-cutingconcerns

业务流程1

业务流程2

业务流程3

●Aspect:

方面,层面

●Joinpoint:

结合点、联结点;

加入业务流程的点或时机

●Pointcut:

切入点、作用点;

指定某个方面在哪些联结点织入到应用程序中

●Advice:

通知、行为;

某个方面的具体实现,代表了一个动作.

●Advisor:

由Pointcut和Advice共同构成

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

org.springframework.aop.Pointcut

ProxyFactoryBean:

用来创建代理对象

<

list>

value>

Advice/Advisorbean<

/value>

/list>

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

①target:

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

②proxyInterfaces:

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

③interceptorNames:

设定拦截器的名字(各个advice或advisorbean的列表)

Advice:

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

●BeforeAdvice:

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

要实现的接口:

org.springframework.aop.MethodBeforeAdvice

●AfterAdvice:

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

org.springframework.aop.AfterReturningAdvice

●ThrowAdvice:

在目标对象的方法发生异常时加入行为;

org.springframework.aop.ThrowsAdvice

●AroundAdvice:

在目标对象的方法执行前后加入行为;

org.aopalliance.intercept.MethodInterceptor

●IntroductionAdvice:

引入的行为(增加了可操作的方法)。

◆声明要添加的功能接口;

◆创建引入Advice;

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

◆在配置文件中定义一个DefaultIntroductionAdvisor的bean。

(需要两个构造方法的参数:

Advice和添加的功能接口)

●PointcutAdvisor:

Pointcut定义了Advice的应用时机;

在Spring中,使用PointcutAdvisor将Pointcut和Advice结合为一个对象。

●NameMatchMethodPointcutAdvisor:

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

●RegexpMethodPointcutAdvisor:

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

定义该属性时可使用的符号包括:

符号

描述

.

符合任意一个字符

+

符合前一个字符一次或多次

*

符合前一个字符零次或多次

\

转义字符,用来转义正则表达式中使用到的字符

●AutoProxy:

自动代理

BeanNameAutoProxyCreator:

根据bean的名字为其自动创建代理对象,bean工厂自动返回其代理对象:

DefaultAdvisorAutoProxyCreator:

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

四、Spring的WebMVC:

1、DispatcherServlet:

作为前端控制器,负责分发客户的请求到Controller;

在web.xml中的配置如下:

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,配置如下:

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

4、ModelAndView:

用来封装View与呈现在View中的Model对象;

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

5、ViewResolver:

DispatcherServlet委托ViewResolver来解析View名称;

常用的ViewResolver实例配置如下:

Cglig库作用1、Spring通过调用cglib在客户端的类之上修改二进制码。

2、能够给某一个类生成子类(Hibernate中也要用到,用来生成子类)。

  CGLIB用来生成动态代理类(dynamicproxyclasses),供核心DI和AOP实现之用,所以大量Spring功能都要用到CGLIB。

五、SpringDataAccess

1、Template

2、DaoSupport

3、TransactionManager

4、TransactionProxy

Spring对Hibernate的集成:

Spring与Struts的集成

如下3种方式:

①、使用Spring的ActionSupport类整合Struts。

②、使用Spring的DelegatingRequestProcessor覆盖Struts的RequestProcessor。

③、将StrutsAction管理委托给Spring框架。

SSH编程示例图:

附,行业的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1