Wenn Sie den Quellcode von SpringAOP lesen, diese Art von Code Es gab aop / aspectj / AspectJExpressionPointcut.java # AspectJExpressionPointcut) (Code angepasst, um Rauschen zu entfernen).
AspectJExpressionPointcut.java
public class AspectJExpressionPointcut {
private static final Set<PointcutPrimitive> SUPPORTED_PRIMITIVES = new HashSet();
static {
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.EXECUTION);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.ARGS);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.REFERENCE);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.THIS);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.TARGET);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.WITHIN);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_ANNOTATION);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_WITHIN);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_ARGS);
SUPPORTED_PRIMITIVES.add(PointcutPrimitive.AT_TARGET);
logger = LogFactory.getLog(AspectJExpressionPointcut.class);
}
}
Dies ist ein Mechanismus namens Static Initialization Block. Bisher wurde die als statisch deklarierte Initialisierung von List / Set usw. als ↓ geschrieben, aber ich bin der Meinung, dass der statische Initialisierungsblock sauberer aussieht.
public class Hoge {
private static final Set<PointcutPrimitive> SUPPORTED_PRIMITIVES = new HashSet(){{
add(PointcutPrimitive.EXECUTION);
add(PointcutPrimitive.ARGS);
add(PointcutPrimitive.REFERENCE);
add(PointcutPrimitive.THIS);
add(PointcutPrimitive.TARGET);
add(PointcutPrimitive.WITHIN);
add(PointcutPrimitive.AT_ANNOTATION);
add(PointcutPrimitive.AT_WITHIN);
add(PointcutPrimitive.AT_ARGS);
add(PointcutPrimitive.AT_TARGET);
}};
}
Recommended Posts