2016-02-17 14 views
1

Я новичок в AspectJ, и я стараюсь:Могу ли я использовать свой собственный объект в args при использовании Aspectj?

Это мой текущий код.

public class MyDBDAO { 
    public boolean update(MyObject myObject) {} 
} 

И Аспект:

@Aspect 
@Component 
public class AspectJClass { 
    @Pointcut("execution(* com.myclass.MyDBDAO.update()) && args(myObject)") 
    public void update(MyObject myObject) {} 
} 

Должен ли я использовать только absoulute Type? Есть ли способы решить эту проблему?

+0

Что именно вы пытаетесь сделать? –

+0

Я хочу проверить параметр в классе аспект перед вставкой БД. – ellen

ответ

0

Вы пробовали это?

@Pointcut("execution(void com.myclass.MyDBDAO.update(MyObject)) && args(myObject)") 
public void update(MyObject myObject) {} 

если вы хотите poincut для всех методов в классе, вы можете сделать это:

@Pointcut("this(com.myclass.MyDBDAO)") 
public void isMyDBDAO() {} 
+0

Thnanks для ответа! Я попробовал первый. Но я получил это сообщение. Вызванный: java.lang.IllegalArgumentException: не предупредив ни одного совпадения для этого имени типа: MyObject [Xlint: invalidAbsoluteTypeName] \t на org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression (PointcutParser.java:301) в org.springframework .aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression (AspectJExpressionPointcut.java:195) \t at – ellen

+0

вы можете отправить свой код консультации? –

+0

Я только что перечитал ваше исключение, и вам нужно указать полный путь к классу MyObject, например com.myclass.MyObject внутри pointcut. вы не опубликовали свой совет, но обратите внимание, что совет, который советует этот pointcut, должен также иметь MyObject как параметр –