package PointCuts;
import java.util.Iterator;
import java.util.Map;
import org.springframework.aop.ClassFilter;
import org.springframework.aop.MethodMatcher;
import org.springframework.aop.Pointcut;
import org.springframework.aop.framework.AopConfigException;
import org.springframework.aop.support.ControlFlowPointcut;
import org.springframework.aop.support.Pointcuts;

public class PointCutUtils implements Pointcut ...{
private Pointcut pointcut;
private Map pointcuts;
public ClassFilter getClassFilter() ...{
return getPointCut().getClassFilter();
}

public MethodMatcher getMethodMatcher() ...{
return getPointCut().getMethodMatcher();
}

public void setPointCuts(Map pointcuts)...{

if(pointcuts==null||pointcuts.size()==0)...{
throw new AopConfigException("至少要设置一个PointCut");
}
pointcut=(Pointcut)pointcuts.get(0);
Iterator it=pointcuts.entrySet().iterator();
while(it.hasNext()) 
...{
Map.Entry entry=(Map.Entry)it.next();
String key=(String)entry.getKey();
Pointcut pc=(Pointcut)entry.getValue();
if(key.equals("union"))...{
union(pc);
}
else if(key.equals("intercept"))...{
intercept(pc);
}
}
}

private void union(Pointcut pc)...{
pointcut=Pointcuts.union(pointcut, pc);
}

private void intercept(Pointcut pc)...{
pointcut=Pointcuts.intersection(pointcut, pc);
}

private Pointcut getPointCut()...{
if(pointcut==null)...{
throw new AopConfigException("没有设置pointcut");
}
else...{
return pointcut;
}
}
}
本文介绍了一个实用的 Spring AOP 切点工具类 PointCutUtils 的实现细节,该工具类支持联合和交集操作,以实现更灵活的切点定义。文章通过具体的 Java 代码展示了如何设置切点集合并进行切点间的组合。
1244

被折叠的 条评论
为什么被折叠?



