大家好!今天让小编来大家介绍下关于学习 spring (十五) advisor的问题,以下是酷知号的小编对此问题的归纳整理,让我们一起来看看吧。
spring入门篇 学习笔记
advisor 就像一个小的自包含的方面,只有一个 advice
自身通过一个 bean 表示,并且必须实现某个 advice 接口,同时 advisor 也可以很好的利用 aspectj 的切入点表达式
spring 通过配置文件中 aop:advisor 元素支持 advisor,实际使用中,大多数情况下它会和 transactional advice 配合使用
为了定义一个 advisor 的优先级以便让 advice 可以有序,可以使用 order 属性来定义 advisor 的顺序
添加切面:
public class concurrentoperationexecutor implements ordered {
private static final int default_max_retries = 2;
private int maxretries = default_max_retries;
private int order = 1;
public void setmaxretries(int maxretries) {
this.maxretries = maxretries;
}
public int getorder() {
return this.order;
}
public void setorder(int order) {
this.order = order;
}
public object doconcurrentoperation(proceedingjoinpoint pjp) throws throwable {
int numattempts = 0;
pessimisticlockingfailureexception lockfailureexception;
do {
numattempts ;
system.out.println("try times : " numattempts);
try {
return pjp.proceed();
} catch (pessimisticlockingfailureexception ex) {
lockfailureexception = ex;
}
} while (numattempts <= this.maxretries);
system.out.println("try error : " numattempts);
throw lockfailureexception;
}
}
添加类:
@service
public class invokeservice {
public void invoke() {
system.out.println("invokeservice ......");
}
public void invokeexception() {
throw new pessimisticlockingfailureexception("");
}
}
添加配置:
添加测试类:
@runwith(blockjunit4classrunner.class)
public class testaopschemaadvisors extends unittestbase {
public testaopschemaadvisors() {
super("classpath:spring-aop-schema-advisors.xml");
}
@test
public void testse() {
invokeservice service = super.getbean("invokeservice");
service.invoke();
system.out.println();
service.invokeexception();
}
}
以上就是小编对于学习 spring (十五) advisor问题和相关问题的解答了,学习 spring (十五) advisor的问题希望对你有用!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文链接:https://www.andon8.com/419117.html