文档章节

springframework【10】

ruyees
 ruyees
发布于 2014/10/05 11:47
字数 513
阅读 12
收藏 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
深圳
产品经理
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.5K
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
255
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
13.2K
7
springtask实现定时任务

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

stephen_wu
2016/08/22
7
0
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
356
0

没有更多内容

加载失败,请刷新页面

加载更多

Univalsal_ImageLoader源码结构与创建者模式 初步小结

最近在回归看Univalsal_ImageLoader源码,本想自己也实现试试写一个,看源码是为了学习看能否使用,助于自己可以写出有自己逻辑结构的代码。 首先我们初始化ImageLoader的配置初始化的时候,...

DannyCoder
38分钟前
0
0
计算卷积神经网络浮点数运算量

前言 本文主要是介绍了,给定一个卷积神经网络的配置之后,如何大概估算它的浮点数运算量。 相关代码:CalFlops,基于MXNet框架的 Scala 接口实现的一个计算MXNet网络模型运算量的demo。 正文...

Ldpe2G
今天
3
0
Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
今天
2
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
今天
3
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部