Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用Aspectj时,我可以在args中使用自己的对象吗?_Java_Spring_Aspectj_Args_Pointcut - Fatal编程技术网

Java 在使用Aspectj时,我可以在args中使用自己的对象吗?

Java 在使用Aspectj时,我可以在args中使用自己的对象吗?,java,spring,aspectj,args,pointcut,Java,Spring,Aspectj,Args,Pointcut,我是AspectJ新手,我尝试过这样做: public class MyDBDAO { public boolean update(MyObject myObject) {} } 和方面: @Aspect @Component public class AspectJClass { @Pointcut("execution(* com.myclass.MyDBDAO.update()) && args(myObject)") public void upd

我是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) {}
 }
我应该只使用绝对式吗? 有什么办法可以解决这个问题吗?

你试过吗

@Pointcut("execution(void com.myclass.MyDBDAO.update(MyObject)) && args(myObject)")
public void update(MyObject myObject) {}
如果要对类中的所有方法进行poincut,可以执行以下操作:

@Pointcut("this(com.myclass.MyDBDAO)")
public void isMyDBDAO() {}
你试过这个吗

@Pointcut("execution(void com.myclass.MyDBDAO.update(MyObject)) && args(myObject)")
public void update(MyObject myObject) {}
如果要对类中的所有方法进行poincut,可以执行以下操作:

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

谢谢你的回答!我试了第一个。但我得到了这个信息。原因:java.lang.IllegalArgumentException:警告与此类型名称不匹配:org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301)org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:195)上的MyObject[Xlint:InvalidabSolutionPename]atI刚刚仔细阅读了您的异常,您需要在切入点内指定类MyObject的完整路径,例如com.myclass.MyObject。您没有发布您的建议,但请注意,建议此切入点的建议也必须将MyObject作为参数谢谢!!我终于解决了这个问题。我这样写切入点@切入点(“执行(void com.myclass.MyDBDAO.update(com.model.MyObject))&&args(MyObject)”)公共void更新(MyObject MyObject){}答案如下!我试了第一个。但我得到了这个信息。原因:java.lang.IllegalArgumentException:警告与此类型名称不匹配:org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301)org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:195)上的MyObject[Xlint:InvalidabSolutionPename]atI刚刚仔细阅读了您的异常,您需要在切入点内指定类MyObject的完整路径,例如com.myclass.MyObject。您没有发布您的建议,但请注意,建议此切入点的建议也必须将MyObject作为参数谢谢!!我终于解决了这个问题。我这样写切入点@切入点(“execution(void com.myclass.MyDBDAO.update(com.model.MyObject))&&args(MyObject)”)public void update(MyObject MyObject){}你到底想做什么?我想在插入DB之前验证aspect类中的参数。你到底想做什么?我想在插入DB之前验证aspect类中的参数。