<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-109  評論-187  文章-25  trackbacks-0

    最近深入的學習了一下 Spring, 感受到了 AOP 的威力,以前看過 BEA DEV2DEV 雜志,有一期專門的 AOP ,里面很詳細講的,看了有一年多了,今天真正來作個例子

    ?

    這個例子也是從 dev2dev 上看的,

    1 :建一個接口 IBusinessLogic

    ?

    package test;

    ?

    public interface IBusinessLogic {

    ?????? public void foo(String i);

    ?

    }

    2 :建一個接口實現的類

    package test;

    ?

    public class BusinessLogic implements IBusinessLogic {

    ?

    ?????? public void foo(String i) {

    ????????????? System.out.println("Inside BusinessLogic.foo()");

    ?

    ?????? }

    ?

    }

    ?

    3 建立一個應用程序 MainApplication

    ?

    ?????? public static void main(String[] args) {

    ????????????? ?// Read the configuration file

    ??????? ApplicationContext ctx =

    ????????? new FileSystemXmlApplicationContext(

    ??????????? "E:\\work\\Test\\src\\spring-config.xml");

    ??????? //Instantiate an object

    ??????? IBusinessLogic testObject =

    ????????? (IBusinessLogic) ctx.getBean("businesslogicbean");

    ??????? testObject.foo("11");

    ?????? }

    ?

    <? xml version = "1.0" encoding = "UTF-8" ?>

    <! DOCTYPE beans PUBLIC

    ????????? "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >

    ?

    < beans >

    ?

    ?? <!-- Bean configuration -->

    ?? < bean id = "businesslogicbean"

    ?? class = "org.springframework.aop.framework.ProxyFactoryBean" >

    ????? < property name = "proxyInterfaces" >

    ???????? < value > test.IBusinessLogic </ value >

    ????? </ property >

    ????? < property name = "target" >

    ???????? < ref local = "beanTarget" />

    ????? </ property >

    ???? <property name="interceptorNames">

    ???????? <list>

    ??????????? <value>theTracingBeforeAdvisor</value>

    ??????????? <value>theTracingAfterAdvisor</value>

    ???????? </list>

    ???????? </property>

    ????

    ?? </ bean >

    ?? <!-- Bean Classes -->

    ?? < bean id = "beanTarget"

    ?? class = "test.BusinessLogic" />

    ??

    ????? <bean id="theTracingBeforeAdvisor"

    ????? class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">

    ????? <property name="advice">

    ???????? <ref local="theTracingBeforeAdvice"/>

    ????? </property>

    ????? <property name="pattern">

    ???????? <value>.*</value>

    ????? </property>

    ?? </bean>

    ???

    ?? <!-- Advisor pointcut definition for after advice -->

    ?? <bean id="theTracingAfterAdvisor"

    ????? class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">

    ????? <property name="advice">

    ???????? <ref local="theTracingAfterAdvice"/>

    ????? </property>

    ????? <property name="pattern">

    ???????? <value>.*</value>

    ????? </property>

    ?? </bean>

    ?

    ?? <!-- Advice classes -->

    ?? <bean id="theTracingBeforeAdvice"

    ????? class="test.TracingBeforeAdvice"/>

    ?? <bean id="theTracingAfterAdvice"

    ????? class="test.TracingAfterAdvice"/>

    ?????

    ?????

    ?

    </ beans >

    ?

    紅色的暫時不配置,你就可以看到打印出來的結果

    Inside BusinessLogic.foo()

    ?

    4 :建立 2 個類 TracingBeforeAdvice

    ?

    package test;

    ?

    import java.lang.reflect.Method;

    ?

    import org.springframework.aop.MethodBeforeAdvice;

    ?

    public class TracingBeforeAdvice implements MethodBeforeAdvice {

    ?????? public void before(Method m, Object[] args, Object target) throws Throwable {

    ????????????? System.out.println(m.getClass());

    ????????????? System.out.println(args);

    ????????????? System.out.println(target);

    ????????????? System.out.println("Hello world! (by " + this.getClass().getName()

    ??????????????????????????? + ")");

    ?????? }

    }

    ?

    ?

    TracingAfterAdvice

    package test;

    ?

    import java.lang.reflect.Method;

    ?

    import org.springframework.aop.AfterReturningAdvice;

    ?

    public class TracingAfterAdvice

    implements AfterReturningAdvice

    {

    ?public void afterReturning(Object object,

    ????????????????????????? Method m,

    ????????????????????????? Object[] args,

    ????????????????????????? Object target)

    ????????????????????????? throws Throwable

    ?{

    ???? System.out.println(

    ?????? "Hello world! (by " +

    ?????? this.getClass().getName() +

    ?????? ")");

    ?}

    }

    然后把紅色部分的配置上去,

    運行 MainApplication

    你就可以看到

    //class java.lang.reflect.Method

    //[Ljava.lang.Object;@3a9bba

    //test.BusinessLogic@1c5ddc9

    Hello world! (by test.TracingBeforeAdvice)

    Inside BusinessLogic.foo()

    Hello world! (by test.TracingAfterAdvice)

    ?

    AOP 在方法開始和技術的時候起到了作用!!!

    posted on 2006-05-18 18:04 小小程序程序員混口飯吃 閱讀(400) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 美女扒开屁股让男人桶爽免费| 亚洲AV午夜成人片| 亚洲三级高清免费| 亚洲免费福利在线视频| 亚洲av中文无码乱人伦在线r▽| 黄色短视频免费看| 亚洲精品午夜无码专区| 国产在线观看无码免费视频| 日韩亚洲变态另类中文| 四虎精品成人免费视频| 一本色道久久综合亚洲精品高清| 全部一级一级毛片免费看| 亚洲综合亚洲综合网成人| 成人妇女免费播放久久久| 亚洲精品无码专区久久久 | 国产午夜免费福利红片| 亚洲AV性色在线观看| 国产在线观看免费视频播放器| 美女无遮挡免费视频网站| 亚洲一区二区三区香蕉| 久99久精品免费视频热77| 亚洲AV色吊丝无码| 国产成人精品男人免费| 中文字幕成人免费高清在线视频| 亚洲AV无码欧洲AV无码网站| 精品国产sm捆绑最大网免费站| 亚洲中文字幕久久无码| 亚洲日韩国产一区二区三区| 久久久精品免费国产四虎| 国产精品亚洲片夜色在线| 国产成人精品免费直播| a级黄色毛片免费播放视频| 亚洲综合综合在线| 日韩高清在线免费观看| 久久久久免费视频| 亚洲国产综合精品| 亚洲综合国产精品第一页| 67194熟妇在线永久免费观看 | 国内一级一级毛片a免费| 亚洲AV无码成人网站在线观看 | 亚洲免费人成视频观看|