में यह AspectJ की तरह इस का उपयोग करते हुए AOP पुस्तकालयों को प्राप्त करना संभव है?
हाँ, सुनिश्चित करें।
public class SampleClass {
public SampleClass() { super(); }
public SampleClass(String s) { this(); }
public SampleClass(int i) { this(); }
public void method01(String s, Number n, Throwable t) {}
public void method02(int i, String s, double d) {}
public void method03(String s) {}
public void method04() {}
public void method05(String s, Number n, double d) {}
public static void main(String[] args) {
new SampleClass().method01("foo", new Integer(11), new RuntimeException("error"));
new SampleClass("test").method02(11, "bar", Math.PI);
new SampleClass(123).method03("zot");
new SampleClass("another test").method04();
new SampleClass(456).method05("baz", new Integer(11), Math.E);
}
}
अब आप सिर्फ एक पहलू है जो अपने सभी विधि फांसी को बीच में रोक लिखने के लिए (और वैकल्पिक भी निर्माता फांसी, जिन्हें आप नीचे) की जरूरत है::
यह AspectJ में ठेठ शुरुआत के व्यायाम की तरह है, इसलिए की तरह है
public aspect MethodArgsAspect {
pointcut allMethods() : execution(* *(..));
pointcut allConstructors() : execution(*.new(..));
before() : !within(MethodArgsAspect) && (allMethods() || allConstructors()) {
System.out.println(thisJoinPointStaticPart.getSignature());
for (Object arg : thisJoinPoint.getArgs())
System.out.println(" " + arg);
}
}
जब SampleClass.main
चल रहा है, इस पहलू प्रिंट होगा:
void SampleClass.main(String[])
[Ljava.lang.String;@7fdcde
SampleClass()
void SampleClass.method01(String, Number, Throwable)
foo
11
java.lang.RuntimeException: error
SampleClass()
SampleClass(String)
test
void SampleClass.method02(int, String, double)
11
bar
3.141592653589793
SampleClass()
SampleClass(int)
123
void SampleClass.method03(String)
zot
SampleClass()
SampleClass(String)
another test
void SampleClass.method04()
SampleClass()
SampleClass(int)
456
void SampleClass.method05(String, Number, double)
baz
11
2.718281828459045
यू एक भी विधि में पैरामीटर के रूप में आ रहा तर्कों के किसी भी संख्या मुद्रित करने के लिए कोशिश कर रहे हैं? –
हां, मैं अपने आवेदन के लिए कैशिंग परत को डिज़ाइन कर रहा हूं, और मैं कक्षा – aryaxt