20060923_spring_小议AOP机制_安装监视器

好久没有继续spring的学习了。今日心血来潮!

现在学到spring的AOP。光是看书上的代码觉得谜团重重。所以打算整理一下思路,我学习东西最讨厌一头雾水了。这几天总是被beforeMethod之类的东西搞成这样。一气之下花了一个钟整理思路,探索机制的问题。

从我的配置文件(beans-config.xml)开始吧。

1、有一个程序用到配置文件

 ApplicationContext context  =  
                
new  FileSystemXmlApplicationContext(
                        
" beans-config.xml " );

这样我们就用到spring的对象加工工厂啦。给它一个配置文件就可以叫它配制出我们想要的类。

2、在来看看配置文件

<? xml version="1.0" encoding="UTF-8" ?>  
<! DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" 
  "http://www.springframework.org/dtd/spring-beans.dtd"
>  

< beans >  
    
< bean  id ="logBeforeAdvice"  
          class
="onlyfun.caterpillar.LogBeforeAdvice" />  

    
< bean  id ="helloSpeaker"  
          class
="onlyfun.caterpillar.HelloSpeaker" />  
    
    
< bean  id ="helloProxy"  
          class
="org.springframework.aop.framework.ProxyFactoryBean" >  
        
< property  name ="proxyInterfaces" >  
            
< value > onlyfun.caterpillar.IHello </ value >  
        
</ property >  
        
< property  name ="target" >  
            
< ref  bean ="helloSpeaker" />  
        
</ property >  
        
< property  name ="interceptorNames" >  
            
< list >  
                
< value > logBeforeAdvice </ value >  
            
</ list >  
        
</ property >  
    
</ bean >  
</ beans >

这里定义了3个实例。工厂就会按照这个图纸来加工零件。加工的3个零件如下:可以看到一个大零件还需要两个小零件的配合。

proxyInterfaces指向接口IHello。指向接口的用意应该是想要多态吧~~这样target只要实现了IHello就可以。

target指向另外一个零件helloSpeaker,这个类需要实现上面指向的接口。就是需要有监视器想要监视的方法。

interceptorNames指向第三个零件logBeforeAdvice。这个类需要实现MethodBeforeAdvice接口,这样才有监视器的功能。它要监视的对象就是target指向的实例。监视的方法则是proxyInterfaces指向的接口拥有的所有方法。只要当这些方法被调用,监视器就会调用before()方法实现监视触发事件处理。

3、工厂加工好了的零件,主人现在要拿回来了。

IHello helloProxy  =  
            (IHello) context.getBean(
" helloProxy " ); // 返回一个带监视器的对象引用

4、现在我们可以照常用自己定义的零件了。不过每次使用的时候,监视器都会有小动作,谁叫你去那家工厂加工零件的呢?

注:这里没有探讨监视去到底是怎么运行的。初学的只需要把它当做黑合处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值