参照网上的spring AOP编程实例进行配置,但是碰到了几个坑。这篇文章重点讲解一下我踩过的两个坑:

1.使用@Service自动装配的时候,基础扫描包配置要正确;

2.xml中切面配置中的execution表达式的匹配规则要注意;

针对第一个问题

是我发现我新建的一个包里面写了一个接口和这个接口的实现,在接口实现上使用@Service,那么在使用这个service的时候,bean会自动注入进来的,但是我写的单测用例一直提示我bean注入失败。我写的其他包里的service就可以正常使用。我突然想起来,spring要识别@Service,是需要扫描基础包的,那应该是我的基础包配置没有将我新建的这个包包含进去。

applicationContext.xml中最初的配置:  

 <context:component-scan base-package="com.nuomi"/>

而我新建的包名是:com.baidu.nuomi.crm.mm,果然是不包含在基础包里面的,于是我在applicationContext.xml配置文件中又新加了下面这一行:

<context:component-scan base-package="com.baidu"/>

就可以了。第一个问题完美解决。

下面说下第二个问题

第一步:写好切面类:

 1 package com.baidu.nuomi.crm.helper.monitorproxy.aspect;
 2 
 3 import org.aspectj.lang.JoinPoint;
 4 import org.aspectj.lang.ProceedingJoinPoint;
 5 
 6 /**
 7  * @author sonofelice
 8  * @version 2015年12月17日 下午1:21:46 类说明 :
 9  */
10 public class ProxyAspect {
11     public void doAfter(JoinPoint jp) {
12         System.out.println("log Ending method:" + jp.getTarget().getClass().getName() + "."
13                 + jp.getSignature().getName());
14     }
15 
16     public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
17         long time = System.currentTimeMillis();
18         Object retVal = pjp.proceed();
19         time = System.currentTimeMillis() - time;
20         System.out.println("process time:" + time + "ms");
21         return retVal;
22     }
23 
24     public void doBefore(JoinPoint jp) {
25         System.out.println("long Beginning methoe:" + jp.getTarget().getClass().getName() + "."
26                 + jp.getSignature().getName());
27     }
28 
29     public void doThrowing(JoinPoint jp, Throwable ex) {
30         System.out.println("methoe" + jp.getTarget().getClass().getName() + "." + jp.getSignature().getName()
31                 + " throw exception");
32         System.out.println(ex.getMessage());
33     }
34 }
View Code

相关文章:

  • 2021-06-15
  • 2021-12-05
  • 2021-11-23
  • 2021-05-24
  • 2022-01-18
  • 2018-01-20
  • 2018-07-27
猜你喜欢
  • 2021-04-27
  • 2021-10-16
  • 2022-12-23
  • 2021-10-11
  • 2021-09-26
  • 2021-05-14
  • 2021-12-24
相关资源
相似解决方案