对于Spring应用程序项目,在检查该对象是否存在之前,我想要delete
或update
某事物(实体)之前。
我有以下内容:
@Pointcut("execution(* com.manuel.jordan.service.impl.PersonaServiceImpl.deleteOne(String))
&& args(id)")
public void deleteOnePointcut(String id){}
@Pointcut("execution(* com.manuel.jordan.service.impl.PersonaServiceImpl.updateOne(com.manuel.jordan.domain.Persona))
&& args(persona)")
public void updateOnePointcut(Persona persona){}
如果我使用:
@Around("PersonaServicePointcut.deleteOnePointcut(id)")
public void delete(ProceedingJoinPoint proceedingJoinPoint, String id) throws Throwable{
if(id != null){
personaService.findOneById(id);
//throw error if not exists,
//has no sense delete something that does not exists
...
}
...
的工作原理。
我是如何尝试以下(上面显示的两个切入点的组合):
@Around("PersonaServicePointcut.deleteOnePointcut(id) ||
PersonaServicePointcut.updateOnePointcut(persona)")
public Object mai(ProceedingJoinPoint proceedingJoinPoint, String id, Persona persona){
if(id != null){
personaService.findOneById(id);
//throw error
}
if(persona != null){
personaService.findOneById(persona.getId());
//throw error
}
//...
proceedingJoinPoint.proceed();
return null;
}
但是我得到了
Caused by: java.lang.IllegalArgumentException:
error at ::0 inconsistent binding
我假设因为我们有一个OR
因为第二个或第三个参数为空。我的意思是应该分配所有参数。
我已经阅读了一些关于组合切入点的教程,但所有这些都没有参数。
只是好奇是否有可能实现这种方法。如果是的话怎么样?