2014-06-18 2 views
0

EventServiceAspect.javaне перехватывать срезов в соответствующие точки

public EventServiceAspect{ 
    @Pointcut(value="call(* com.xyz.ServiceInput.callSetup(..))") 
    public void anyCallSetup(){} 

    @After("anyCallSetup() && @annotation(publishEventToService)") 
    public void publishEvent(JoinPoint jp, PublishEventToService publishEventToService){ 
     log.warn("batman is here!"); 
    } 
} 

SampleClass.java

public SampleClass{ 
    @PublishEventToService 
    public void someFunc(){ 
     serviceInput.callSetup("testing testing") 
    } 
} 

callSetup не быть перехвачены Pointcut. Любая идея, что не так с моим кодом?

Это большой файл конфигурации ... соответствующая часть:

<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd 
     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd" 
    default-init-method="init"> 

<aop:aspectj-autoproxy proxy-target-class = "true"/> 
+0

можете добавить конфигурационный файл весны. –

+0

@VinitPrajapati, пожалуйста, проверьте изменения. – sudeepdino008

ответ

1

Пожалуйста, проверьте этот

http://eggsylife.co.uk/2010/02/03/spring-annotation-based-aop-and-intercepting-the-ball/

и это должно быть выполнение вместо вызова

+0

Мне нужно иметь это как вызов, так как мне нужна информация о SampleClass, а также – sudeepdino008

+0

Если вам нужно 'call()', вы не можете использовать Spring AOP, потому что этот тип pointcut не поддерживается в этом варианте AOP lite. Вам нужно переключиться на полный AspectJ (см. Документацию Spring о том, как настроить LTW, но вы также можете использовать CTW). Там 'call()' поддерживается. P.S .: Ваш pointcut 'call (* com.xyz.ServiceInput.callSetup (..))' все еще не совпадает с именем метода 'SampleClass.someFunc()'. ;-) – kriegaex

Смежные вопросы