spring aop切点无法进入

滑山论贱 发布于 2014/12/24 13:17
阅读 1K+
收藏 0
代码如下
private static final Logger log = LoggerFactory.getLogger(AnalysisAspect.class);
	public Map<String,String> map=new HashMap<String, String>();
	
	
	public void test(){
		
	}
	
	@Pointcut("execution(* cn.com.soft.user.service.impl.CustomerServiceImpl.findGeCustomerByPropertyName*(..))")  
    public void myPointcut(JoinPoint jp){
		map.put("1", "1");
		System.out.println("myPointcut目标方法参数为:"+Arrays.toString(jp.getArgs())); 
		System.out.println("----myPointcut----------");
	}
	
	@Before(value = "execution(* cn.com.soft.user.service.impl.CustomerServiceImpl.findGeCustomerByPropertyName*(..))")
	public void before(JoinPoint jp){
		 System.out.println("before目标方法参数为:"+Arrays.toString(jp.getArgs())); 
		 Signature a=jp.getSignature();
		map.put("2", "2");
		System.out.println("----before----------");
	}
	
}

用spring的注入service点方法能进入,但是service点方法里面在调用实现类的其他方法不会进入。

我原先加入了下面的没有效果

@Before(value = "execution(* cn.com.sinosoft.user.service.impl.CustomerServiceImpl.userLogin*(..)) "
   + "and execution(* cn.com.sinosoft.user.service.impl.CustomerServiceImpl.findGeCustomerByPropertyName*(..))")

谁能告诉我为啥?谢谢。

 


加载中
1
南湖船老大
南湖船老大
目测你用的proxy模式,换成aspectj模式
lxbzmy
lxbzmy
对。
0
滑山论贱
滑山论贱
service.userLogin()能调用到,但是service.A()调用findGeCustomerByPropertyName()方法,就不进入切点
0
甘薯
甘薯

没用过这个东西, 

但是我感觉你是否在service.A()调用的那个方法不是用spring生成出来的对象去执行的?

如果是这样的话,Spring的托管就不起作用了, spring不像invocationHandler这种东西拦截到任何方法都是JVM保证的.

0
滑山论贱
滑山论贱
他们说aop嵌套了。。,怎么解决?
0
开源中国驻联合国理事
开源中国驻联合国理事
你干嘛不用拦截器啊??不要叫我雷锋,叫我张明华……
漂泊者及其影子
漂泊者及其影子
拦截器拦截的是请求,如果是要针对更具体的拦截的话aop是最好的选择
返回顶部
顶部