स्प्रिंग एओपी - एक्सएमएल थ्रोइंग सलाह के बाद
After-throwingएक सलाह प्रकार है जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन के बाद चलती है, केवल अगर विधि अपवाद को फेंककर बाहर निकलती है। निम्नलिखित सलाह के बाद वाक्य रचना है।
वाक्य - विन्यास
<aop:config>
<aop:aspect id = "log" ref = "logging">
<aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>
<aop:after-throwing PointCut-ref = "PointCut-id" throwing = "ex"
method = "methodName"/>
</aop:aspect>
</aop:config>
कहाँ पे,
PointCut-id - प्वाइंटकॉट की आईडी।
ex - फेंका जाने वाला अपवाद।
methodName - फ़ंक्शन का विधि नाम, जिसे कॉल किया जाने वाला फ़ंक्शन अपवाद कहता है और बाहर निकलता है।
आफ्टर थ्रोइंग एडवाइस से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो थ्रोइंग एडवाइस के बाद लागू होगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग नंबर बनाने के लिए निम्नलिखित चरणों का उपयोग करें -
कदम | विवरण |
---|---|
1 | अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें । |
2 | बीन कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं। |
निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।
package com.tutorialspoint;
public class Logging {
/**
* This is the method which I would like to execute
* if there is an exception raised.
*/
public void afterThrowingAdvice(IllegalArgumentException ex) {
System.out.println("There has been an exception: " + ex.toString());
}
}
निम्नलिखित की सामग्री है Student.java फ़ाइल।
package com.tutorialspoint;
public class Student {
private Integer age;
private String name;
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
System.out.println("Age : " + age );
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
System.out.println("Name : " + name );
return name;
}
public void printThrowException(){
System.out.println("Exception raised");
throw new IllegalArgumentException();
}
}
निम्नलिखित की सामग्री है MainApp.java फ़ाइल।
package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("Beans.xml");
Student student = (Student) context.getBean("student");
student.printThrowException();
}
}
निम्नलिखित विन्यास फाइल है Beans.xml।
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop = "http://www.springframework.org/schema/aop"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">
<aop:config>
<aop:aspect id = "log" ref = "logging">
<aop:PointCut id = "selectAll"
expression = "execution(* com.tutorialspoint.*.*(..))"/>
<aop:after-throwing PointCut-ref = "selectAll"
throwing = "ex" method = "afterThrowingAdvice"/>
</aop:aspect>
</aop:config>
<!-- Definition for student bean -->
<bean id = "student" class = "com.tutorialspoint.Student">
<property name = "name" value = "Zara" />
<property name = "age" value = "11"/>
</bean>
<!-- Definition for logging aspect -->
<bean id = "logging" class = "com.tutorialspoint.Logging"/>
</beans>
प्रोजेक्ट चलाएं
एक बार जब आप स्रोत और कॉन्फ़िगरेशन फ़ाइलों का निर्माण कर लेते हैं, तो अपना एप्लिकेशन चलाएं। अपने आवेदन और उपयोग में MainApp.java पर राइट क्लिक करेंrun as Java Applicationआदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।
Exception raised
There has been an exception: java.lang.IllegalArgumentException
Exception in thread "main" java.lang.IllegalArgumentException
at com.tutorialspoint.Student.printThrowException(Student.java:25)
at com.tutorialspoint.Student$$FastClassBySpringCGLIB$$7dc55815.invoke(<generated>>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:717)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:58)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.tutorialspoint.Student$$EnhancerBySpringCGLIB$$8514cd8.printThrowException(<generated>)
at com.tutorialspoint.MainApp.main(MainApp.java:15)