Aop代理around例子和需要jar包

[b]需要的jar包:[/b]
aspectjrt.jar
aopalliance.jar
aspectjweaver.jar
cglib-nodep-2.1_3.jar

Aop例子:
context_aop.xml配置文件:
<bean id="fooService" class="spring.aop.DefaultFooService" />
<bean id="aopInject" class="spring.aop.AopInject"></bean>
<aop:config>
<aop:aspect ref="aopInject">
<aop:pointcut expression="execution(* spring.aop.FooService.getFoo(String,int))" id="allExecution"/>
<aop:around method="injectMethod" pointcut-ref="allExecution"/>
</aop:aspect>
</aop:config>


AopInject类, 代理类:
public class AopInject {
public Object injectMethod(ProceedingJoinPoint call) throws Throwable {
System.out.println("AopInject类注入");
return call.proceed();
}
}


接口类:
public class Foo {
public Foo(String name, int age){
System.out.println("foo类初始化");
}
}
public interface FooService {
Foo getFoo(String fooName, int age);
}
public class DefaultFooService implements FooService {
public Foo getFoo(String name, int age) {
return new Foo(name, age);
}
}


执行类:
BeanFactory ctx = new ClassPathXmlApplicationContext("context_aop.xml");
FooService foo = (FooService) ctx.getBean("fooService");
foo.getFoo("Pengo", 12);


[color=red]注意事项PS:
一: 如果代理类需要用到代理的值, 例如foo.getFoo("Pengo", 12), 则可以在配置文件中加入expression="execution(* spring.aop.FooService.getFoo(String,int)) and args(name,age)"
代理类的代理方法改为:
public Object injectMethod(ProceedingJoinPoint call,String name,int age)
二: AopInject为代理类,必须有返回值,如果是成功,则返回call.proceed(),这样就可以直接到本体类,否则则不进入本体类[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值