文档章节

springframework【10】

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 513
阅读 12
收藏 0
点赞 0
评论 0

Spring的Autoproxing (自动代理,注意必须使用ApplicaitonContext来获取bean才能进行自动代理,同时要将cglib.jar给加入到classpath中去)


自动代理可以不用为每一个目标对象那个手动定义代理对象,使用自动代理,您可以通过Bean的名称或者是Pointcut对比,自动为符合对比条件的目标对象建立代理对象。
1、BeanNameAutoProxyCreator
  如果要提供的Advice的目标对象很多,这个时候,我们一个个的建立代理对象那个会是件很麻烦的事情,为此我们可以给目标对象取适当的bean的名称,例如某些服务对象取名为***Service,这样我们就可以使用org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator自动创建代理。
  常见写法如下:
 配置文件的定义:

 

<bean id="beforeAdvice" class="com.itcast.advice.LogBeforeAdvice"></bean>
<bean id="afterAdvice" class="com.itcast.advice.LogAfterAdvice"></bean>
<bean id="helloAdvise" class="org.springframework.aop.support.NameMatchMethodPointcutAdvisor">
 <property name="mappedNames" >
 <list>
 <value>helloAaa</value>
 <value>helloBbb</value>
 </list>
 </property>
 <property name="advice" ref="beforeAdvice"></property>
</bean>
<bean id="beanNameAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
 <property name="beanNames">
 <list>
 <value>hello*</value>
 </list>
 </property>
 <property name="interceptorNames" value="helloAdvise"></property>
</bean>

 

上边配置文件的意思就是凡是以hello开头的bean的方法被调用的时候都要经过helloAdvise这个advisor的处理。在helloAdvise中,对于helloAaa,helloBbb方法进行了beforeAdvice的拦截。
2、DefaultAdvisorAutoProxyCreator
Spring提供的自动代理建立者还有
org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator,只要我们在定义文件中加上DefaultAdvisorAutoProxyCreator的设置,在Bean的定义文件被读取完成之后,它会自动搜寻所有的advisor,并自动将Advisor应用至符合Pointcuts的目标对象身上。这种方式就带有随机性了。是否被advisor命中完全看advisor对bean的方法名称的匹配了。相当于我定义了一个全局的advisor。applicationContext.xml中声明的所有的bean中的方法被调用的时候,我都看一下advisor中对方法的匹配是否符合,如果符合就将advisor中的advice给应用上,拦截方法的处理。
实际编码的时候如下:

 

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

 

 

 

 

本文转载自:http://zuoqiang.iteye.com/blog/671145

共有 人打赏支持
ruyees
粉丝 3
博文 71
码字总数 0
作品 0
深圳
产品经理
用commons-net包写Ftp客户端下载(五)

这里我设置现成是20,然后出现了io异常,说socket无法读取。。而且FTPServer日志文件说,连接被关闭的错误。。 这个折磨的头大啊,死活找不出来原因。。。纠结纠结。。。。 于是上FtpServer...

猴子 ⋅ 2011/10/20 ⋅ 0

Failed to convert value of type [java.lang.String] to required type [java.lang.Long]

2016-09-19 10:14:54.157 [http-nio-8080-exec-5] [DEBUG] org.springframework.web.servlet.DispatcherServlet {DispatcherServlet.java:845} - DispatcherServlet with name 'spring-servl......

落落酱 ⋅ 2016/09/19 ⋅ 2

spring 第13天 使用@scheduled注解执行定时任务

我们使用spring的注解 @Scheduled 执行定时任务 创建spring-task.xml 文件 Xml代码 <!---加入:xmlns:task="http://www.springframework.org/schema/task"--> <?xml version="1.0" encoding......

上班不要玩手机 ⋅ 2016/10/09 ⋅ 0

springMVC+Mybatis整合 Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

在按照视频做孙宇老师springmvc和mybatis整合视频的例子,一直提示注入失败,不是很明白为什么注入失败,直接贴代码 希望大神帮忙, 报错: 2015-9-17 10:00:09 org.apache.tomcat.util.dige...

BabyMason ⋅ 2015/09/17 ⋅ 7

spring data jpa 问题

18-May-2016 10:53:20.612 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version: Apache Tomcat/8.0.32 18-May-2016 10:53:20.616 INFO [main] org.apache.c......

weir2016 ⋅ 2016/05/18 ⋅ 0

springside4 quick-start之后showcase报错?

13:24:54.882 [JdkTimerJob-0] INFO o.s.e.s.d.schedule.UserCountScanner - There are 6 user in database, printed by jdk timer job. 13:24:56.823 [main] ERROR o.s.web.context.Context......

杨忠诚 ⋅ 2013/05/17 ⋅ 0

spring注解测试错误

跟着视频练习的小demo,测试时候报错,百度了多种方法解决不了。 这是目录结构: 这是错误信息: 十一月 24, 2017 11:10:03 上午 org.springframework.test.context.support.DefaultTestCont...

京墨 ⋅ 2017/11/24 ⋅ 4

springtask实现定时任务

springtask支持注解和配置文件两种形式,下面将分别介绍这两种方式。 第一种:配置文件方式 第一步:编写作业类 即普通的pojo,如下: 查看复制到剪贴板打印 import org.springframework.ste...

stephen_wu ⋅ 2016/08/22 ⋅ 0

spring强制cglib代理不起作用?附异常信息

配置了强制使用cglib,但spring还是使用JDK代理service,所有的service都实现了IGenericService接口,而且在有注入bean的地方,会报错 Cannot convert value of type [$Proxy10 implementing ...

amss ⋅ 2013/06/13 ⋅ 1

IDEA 运行web项目 正常启动可以debug报错

我使用的IDEA 2016.3的版本 正常启动项目是可以的,但是我debug的时候报错!!!日志如下希望大神给看一下!!!! 2016-12-02 10:55:57.199 INFO 4384 --- [ restartedMain] com.handsure.sycs.App...

ExceptionB ⋅ 2016/12/02 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

解决yum安装报错Protected multilib versions

使用yum安装报错Protected multilib versions原因是因为多个库不能共存,不过更新的话也并不行,但是可以在安装命令后面加上如下一段命令: --setopt=protected_multilib=false 案例: 比如需...

北岩 ⋅ 30分钟前 ⋅ 0

为什么要学习Typescript???

简单来说 目前的typescript就是未来的javascript 为什么?? 这要从ECMA-262标准的第4版说起 对了 我们说的ES5 其实是ECMAScript3.1这个替代性建议被扶正了而已... 那么 第4版标准是什么? 看看...

hang1989 ⋅ 34分钟前 ⋅ 0

linux安装ipfs

一、下载ipfs # cd /usr/local/ipfs/ # wget https://dist.ipfs.io/go-ipfs/v0.4.15/go-ipfs_v0.4.15_linux-amd64.tar.gz # tar -zxvf go-ipfs_v0.4.15_linux-amd64.tar.gz 二、安装ipfs # ......

八戒八戒八戒 ⋅ 40分钟前 ⋅ 0

jvm程序执行慢诊断手册

生产环境最多的几种事故之一就是程序执行慢,如果是web服务的话,表现就是响应时间长。本文分享,从业多年形成的排查守则。 诊断步骤 系统资源查看 首先是系统资源查看,而且必须是在第一步。...

xpbob ⋅ 40分钟前 ⋅ 0

YII2 advanced 高级版本项目搭建-添加API应用以及多应用

一、YII安裝 安裝yii可以用composer安裝,也可以在yii中文社区下载归档文件安装 composer安装就不介绍了,因为要安装composer,比较麻烦,当然安装了composer是最好的,以后安装yii的插件要用...

botkenni ⋅ 41分钟前 ⋅ 0

在jdk1.8的环境下模拟永久代内存溢出

相信不少小伙伴在看深入理解Java虚拟机的时候,作者给我们举例一个demo来发生PermGen space 1、通过List不断添加String.intern(); 2、通过设置对应的-XX:PermSize与-XX:MaxPermSize(更快看到...

虾几把写 ⋅ 今天 ⋅ 0

开发OpenDaylight组件的完整流程

在前面介绍学习了OpenDaylight的几个重要模块后,这里再来介绍下完整开发一个模块的过程。 OSGI的bundles提供被其他OSGI组件调用的服务。这个教程中展示的是Data Packet Service去解析数据包...

wangxuwei ⋅ 今天 ⋅ 0

Java序列化和反序列化

1、什么是序列化和反序列化 序列化:把对象转换为字节序列的过程。 反序列化:把字节序列恢复成对象的过程。 2、被序列化的类需要实现serializable接口,只是为了标注该对象是可以被序列化的...

IT-Mamba ⋅ 今天 ⋅ 0

流式构建原理

流式构建需要达到分钟级的数据更新频率,Kylin采用类似于Spark Streaming的做法,每隔数分钟进行一次微构建。这边的构建需要考虑到一个延迟因素,分布式网络存在延迟等因素,该时间段的数据有...

无精疯 ⋅ 今天 ⋅ 0

在maven项目工程编写solr代码,需要的依赖

solrJ <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>6.6.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents<......

爱运动的小乌龟 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部