AOPのDelegateInterceptor

1.IBase.java

package examples.di;

public interface IBase {
 public abstract void run();
}

2.Dummy.java

package examples.di;

public abstract class Dummy implements IBase {
}

3.Substance.java

package examples.di.impl;

import examples.di.IBase;

public class Substance implements IBase {
    public void run() {
        System.out.println(this);
    }
}

 

4.AopDelegateClient.java

package examples.di.main;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.S2ContainerFactory;

import examples.di.Dummy;
import examples.di.IBase;

public class AopDelegateClient {
    private static String PATH = "Delegate.dicon";
    public static void main( String[] args ){
        S2Container container = S2ContainerFactory.create(PATH);
        IBase base = (IBase) container.getComponent(Dummy.class);
        for (int i = 0; i < 5; ++i) {
            base.run();
        }

    }
}

5.Delegate.dicon

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components>
    <component class="examples.di.Dummy">
        <aspect>
            <component class="org.seasar.framework.aop.interceptors.DelegateInterceptor">
                <initMethod name="setTarget">
                    <arg>new sample.aop.delegateinterceptor.Substance()</arg>
                </initMethod>
            </component>
        </aspect>
    </component>
</components>

 

运行结果为:

examples.di.impl.Substance@2bb514

examples.di.impl.Substance@2bb514
examples.di.impl.Substance@2bb514
examples.di.impl.Substance@2bb514
examples.di.impl.Substance@2bb514

 

如果改为:

<component class="examples.di.Dummy">
        <aspect>
            <component class="org.seasar.framework.aop.interceptors.PrototypeDelegateInterceptor">
                    <property name="targetName">"target"</property>
            </component>
        </aspect>
    </component>
    <component name="target" class="examples.di.impl.Substance"  instance="prototype"/>

则运行结果为:

examples.di.impl.Substance@1617189
examples.di.impl.Substance@64f6cd
examples.di.impl.Substance@872380
examples.di.impl.Substance@2bb514
examples.di.impl.Substance@17d5d2a
生成了不同的实例

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值