स्प्रिंग एओपी - त्वरित गाइड

स्प्रिंग फ्रेमवर्क के प्रमुख घटकों में से एक है Aspect Oriented Programming (AOP)ढांचा। आस्पेक्ट ओरिएंटेड प्रोग्रामिंग प्रोग्राम लॉजिक को अलग-अलग भागों में तोड़ता हैso-called concerns। किसी कार्य के कई बिंदुओं को जोड़ने वाले कार्यों को क्रॉस-कटिंग चिंता कहा जाता है। इनcross-cutting concernsवैचारिक रूप से एप्लिकेशन के व्यावसायिक तर्क से अलग हैं। लॉगिंग, ऑडिटिंग, डिक्लेक्टिव ट्रांजैक्शंस, सिक्योरिटी, कैशिंग आदि जैसे पहलुओं के विभिन्न सामान्य अच्छे उदाहरण हैं।

OOP में प्रतिरूपकता की प्रमुख इकाई वर्ग है, जबकि AOP में प्रतिरूपकता की इकाई पहलू है। निर्भरता इंजेक्शन आपको एक दूसरे से अपने आवेदन वस्तुओं को कम करने में मदद करता है, जबकि एओपी आपको उन वस्तुओं से क्रॉस-कटिंग चिंताओं को कम करने में मदद करता है जो वे प्रभावित करते हैं। AOP प्रोग्रामिंग भाषाओं जैसे Perl, .NET, Java, और अन्य में ट्रिगर की तरह है।

स्प्रिंग एओपी मॉड्यूल इंटरसेप्टर्स को एक एप्लिकेशन को इंटरसेप्ट करने देता है। उदाहरण के लिए, जब किसी विधि को निष्पादित किया जाता है, तो आप विधि के निष्पादन से पहले या बाद में अतिरिक्त कार्यक्षमता जोड़ सकते हैं।

यह अध्याय आपको विंडोज़ और लिनक्स आधारित सिस्टम पर स्प्रिंग एओपी स्थापित करने की प्रक्रिया के माध्यम से ले जाता है। स्प्रिंग AOP को किसी भी जटिल सेटअप प्रक्रिया के बिना कुछ सरल चरणों का पालन करके आसानी से अपने वर्तमान जावा वातावरण और MAVEN के साथ स्थापित और एकीकृत किया जा सकता है। स्थापना करते समय उपयोगकर्ता प्रशासन की आवश्यकता होती है।

सिस्टम आवश्यकताएं

JDK जावा एसई 2 जेडडीके 1.5 या इसके बाद के संस्करण
याद 1 जीबी रैम (अनुशंसित)
डिस्क में जगह कोई न्यूनतम आवश्यकता नहीं
ऑपरेटिंग सिस्टम संस्करण विंडोज एक्सपी या उससे ऊपर, लिनक्स

आइए अब स्प्रिंग एओपी को स्थापित करने के चरणों को देखें।

चरण 1: अपने जावा इंस्टॉलेशन को सत्यापित करें

सबसे पहले, आपको अपने सिस्टम पर जावा सॉफ्टवेयर डेवलपमेंट किट (एसडीके) इंस्टॉल करना होगा। इसे सत्यापित करने के लिए, आप जिस प्लेटफ़ॉर्म पर काम कर रहे हैं, उसके आधार पर निम्नलिखित दो कमांड्स में से किसी को निष्पादित करें।

यदि जावा इंस्टॉलेशन ठीक से किया गया है, तो यह आपके जावा इंस्टॉलेशन के वर्तमान संस्करण और विनिर्देश को प्रदर्शित करेगा। निम्न तालिका में एक नमूना आउटपुट दिया गया है।

मंच आदेश नमूना आउटपुट
खिड़कियाँ

ओपन कमांड कंसोल और प्रकार -

\>java -version

जावा संस्करण "1.7.0_60"

जावा (टीएम) एसई रन टाइम एनवायरनमेंट (बिल्ड 1.7.0_60-b19)

जावा हॉटस्पॉट (TM) 64-बिट सर्वर VM (24.60-b09, मिश्रित मोड का निर्माण)

लिनक्स

ओपन कमांड टर्मिनल और टाइप -

$java -version

जावा संस्करण "1.7.0_25"

ओपन JDK रनटाइम एनवायरनमेंट (rhel-2.3.10.4.el6_4-x86_64)

ओपन JDK 64-बिट सर्वर VM (बिल्ड 23.7-b01, मिश्रित मोड)

हम मानते हैं कि इस ट्यूटोरियल के पाठकों के पास अपने सिस्टम पर जावा एसडीके संस्करण 1.7.0_60 है।

यदि आपके पास जावा एसडीके नहीं है, तो इसका वर्तमान संस्करण डाउनलोड करें https://www.oracle.com/technetwork/java/javase/downloads/index.html और इसे स्थापित किया है।

चरण 2: अपने जावा पर्यावरण सेट करें

वातावरण चर JAVA_HOME को आधार निर्देशिका स्थान पर इंगित करने के लिए सेट करें जहाँ जावा आपकी मशीन पर स्थापित है। उदाहरण के लिए,

अनु क्रमांक। मंच और विवरण
1

Windows

JAVA_HOME को C: \ ProgramFiles \ java \ jdk1.7.0_60 पर सेट करें

2

Linux

निर्यात JAVA_HOME = / usr / स्थानीय / जावा-वर्तमान

जावा कंपाइलर स्थान का पूरा पथ सिस्टम पथ में जोड़ें।

अनु क्रमांक। मंच और विवरण
1

Windows

स्ट्रिंग "C: \ Program Files \ Java \ jdk1.7.0_60 \ bin" को सिस्टम चर पथ के अंत में जोड़ें।

2

Linux

निर्यात पाथ = $ पाथ: $ जाव_होम / बिन /

आदेश निष्पादित करें java -version ऊपर बताए अनुसार कमांड प्रॉम्प्ट से।

चरण 3: मावेन आर्काइव डाउनलोड करें

मावेन 3.3.3 से डाउनलोड करें https://maven.apache.org/download.cgi

ओएस पुरालेख का नाम
खिड़कियाँ apache-maven-3.3.3-bin.zip
लिनक्स अपाचे-Maven-3.3.3-bin.tar.gz
मैक अपाचे-Maven-3.3.3-bin.tar.gz

चरण 4: मावेन आर्काइव निकालें

संग्रह को निकालें, उस निर्देशिका में जिसे आप मावेन 3.3.3 स्थापित करना चाहते हैं। आर्काइव से उपनिर्देशिका अपाचे-मावेन-3.3.3 बनाया जाएगा।

ओएस स्थान (आपकी स्थापना के आधार पर भिन्न हो सकते हैं)
खिड़कियाँ C: \ Program Files \ Apache Software Foundation \ Apache-maven-3.3.3
लिनक्स / Usr / स्थानीय / अपाचे-Maven
मैक / Usr / स्थानीय / अपाचे-Maven

चरण 5: मावेन पर्यावरण चर सेट करें

परिवेश चर में M2_HOME, M2, MAVEN_OPTS जोड़ें।

ओएस उत्पादन
खिड़कियाँ

सिस्टम गुण का उपयोग करके पर्यावरण चर सेट करें।

M2_HOME = C: \ Program Files \ Apache Software Foundation \ Apache-maven-3.3.3

M2 =% M2_HOME% \ bin

MAVEN_OPTS = -Xms256m -Xmx512m

लिनक्स कमांड टर्मिनल खोलें और पर्यावरण चर सेट करें।

निर्यात M2_HOME = /usr/local/apache-maven/apache-maven-3.3.3

निर्यात M2 = $ M2_HOME / बिन

निर्यात MAVEN_OPTS = -Xms256m -Xmx512m

मैक

कमांड टर्मिनल खोलें और पर्यावरण चर सेट करें।

निर्यात M2_HOME = /usr/local/apache-maven/apache-maven-3.3.3

निर्यात M2 = $ M2_HOME / बिन

निर्यात MAVEN_OPTS = -Xms256m -Xmx512m

चरण 6: सिस्टम पथ में मावेन बिन निर्देशिका स्थान जोड़ें

अब सिस्टम पथ में एम 2 चर को जोड़ें।

ओएस उत्पादन
खिड़कियाँ सिस्टम चर के अंत में स्ट्रिंग 2%; 2% जोड़ें।
लिनक्स निर्यात पथ = $ एम 2: $ पथ
मैक निर्यात पथ = $ एम 2: $ पथ

चरण 7: मावेन स्थापना को सत्यापित करें

अब कंसोल खोलें, और निम्नलिखित को निष्पादित करें mvn आदेश।

ओएस टास्क आदेश
खिड़कियाँ कमांड कंसोल खोलें ग: \> मवन - विसर्जन
लिनक्स कमांड टर्मिनल खोलें $ मवन - विसर्जन
मैक टर्मिनल खोलें मशीन: <joseph $ mvan --version

अंत में, उपरोक्त कमांड के आउटपुट को सत्यापित करें, जो कुछ इस प्रकार होना चाहिए -

ओएस उत्पादन
खिड़कियाँ

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17: 27: 37 + 05: 30)

मावेन होम: C: \ Program Files \ Apache Software Foundation \ Apache-maven-3.3.3

जावा संस्करण: 1.7.0_75, विक्रेता: ओरेकल कॉर्पोरेशन

जावा होम: C: \ Program Files \ Java \ jdk1.7.0_75 \ jre

डिफ़ॉल्ट लोकेल: en_US, प्लेटफ़ॉर्म एन्कोडिंग: Cp1252

लिनक्स

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17: 27: 37 + 05: 30)

मावेन घर: /सुआर / लोकाले / मपकेन / पचे- मावेन-3.3.3

जावा संस्करण: 1.7.0_75, विक्रेता: ओरेकल कॉर्पोरेशन

जावा होम: /usr/local/java-current/jdk1.7.0_75/jre

मैक

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T17: 27: 37 + 05: 30)

मावेन घर: /सुआर / लोकाले / मपकेन / पचे- मावेन-3.3.3

जावा संस्करण: 1.7.0_75, विक्रेता: ओरेकल कॉर्पोरेशन

Java होम: /Library/Java/Home/jdk1.7.0_75/jre

चरण 8 - ग्रहण आईडीई सेट करें

इस ट्यूटोरियल के सभी उदाहरण ग्रहण आईडीई का उपयोग करके लिखे गए हैं। इसलिए मेरा सुझाव है कि आपके पास आपके मशीन पर स्थापित ग्रहण का नवीनतम संस्करण होना चाहिए।

ग्रहण आईडीई स्थापित करने के लिए, से नवीनतम ग्रहण बायनेरिज़ डाउनलोड करें https://www.eclipse.org/downloads/। एक बार जब आप इंस्टॉलेशन डाउनलोड कर लेते हैं, तो बाइनरी वितरण को सुविधाजनक स्थान पर अनपैक कर दें। उदाहरण के लिए, विंडोज पर C: \ ग्रहण में, या लिनक्स / यूनिक्स पर / usr / स्थानीय / ग्रहण और अंत में उचित रूप से पथ परिवर्तन सेट करें।

विंडोज मशीन पर निम्न आदेशों को निष्पादित करके ग्रहण शुरू किया जा सकता है, या आप eclipse.exe पर डबल-क्लिक कर सकते हैं

%C:\eclipse\eclipse.exe

यूनिक्स (सोलारिस, लिनक्स, आदि) मशीन पर निम्नलिखित आदेशों को निष्पादित करके ग्रहण शुरू किया जा सकता है -

$/usr/local/eclipse/eclipse

एक सफल स्टार्टअप के बाद, यदि सब कुछ ठीक है, तो उसे निम्नलिखित परिणाम प्रदर्शित करने चाहिए -

एक बार जब आप इस अंतिम चरण के साथ हो जाते हैं, तो आप अपने पहले एओपी उदाहरण के लिए आगे बढ़ने के लिए तैयार हैं, जिसे आप अगले अध्याय में देखेंगे।

इससे पहले कि हम एओपी के साथ काम करना शुरू करें, आइए हम एओपी अवधारणाओं और शब्दावली से परिचित हों। ये पद वसंत के लिए विशिष्ट नहीं हैं, बल्कि वे एओपी से संबंधित हैं।

अनु क्रमांक। शर्तें और विवरण
1

Aspect

एक मॉड्यूल जिसमें एपीआई का एक सेट होता है जो क्रॉस-कटिंग आवश्यकताओं को प्रदान करता है। उदाहरण के लिए, एक लॉगिंग मॉड्यूल को लॉगिंग के लिए एओपी पहलू कहा जाएगा। एक आवेदन में आवश्यकता के आधार पर किसी भी संख्या में पहलू हो सकते हैं।

2

Join point

यह आपके एप्लिकेशन में एक बिंदु को दर्शाता है जहां आप AOP पहलू को प्लग-इन कर सकते हैं। आप यह भी कह सकते हैं, यह आवेदन में वास्तविक स्थान है जहां स्प्रिंग एओपी ढांचे का उपयोग करके एक कार्रवाई की जाएगी।

3

Advice

यह विधि निष्पादन से पहले या बाद में की जाने वाली वास्तविक क्रिया है। यह कोड का वास्तविक टुकड़ा है जिसे स्प्रिंग एओपी ढांचे द्वारा कार्यक्रम के निष्पादन के दौरान लगाया जाता है।

4

PointCut

यह एक या एक से अधिक जॉइंटप्वाइंट का एक सेट है जहां एक सलाह पर अमल किया जाना चाहिए। आप भाव या पैटर्न का उपयोग करके पॉइंटकैट्स निर्दिष्ट कर सकते हैं जैसा कि हम अपने एओपी उदाहरणों में देखेंगे।

5

Introduction

एक परिचय आपको मौजूदा कक्षाओं में नए तरीकों या विशेषताओं को जोड़ने की अनुमति देता है।

6

Target object

किसी एक या अधिक पहलुओं द्वारा दी जाने वाली वस्तु। यह वस्तु हमेशा एक अनुमानित वस्तु होगी। यह भी सलाह दी वस्तु के रूप में जाना जाता है।

7

Weaving

बुनाई एक सलाह दी गई वस्तु बनाने के लिए अन्य एप्लिकेशन प्रकारों या वस्तुओं के साथ पहलुओं को जोड़ने की प्रक्रिया है। यह संकलन समय, लोड समय, या रनटाइम पर किया जा सकता है।

निम्न पहलुओं में उल्लिखित पांच प्रकार की सलाह के साथ वसंत के पहलू काम कर सकते हैं।

अनु क्रमांक। सलाह और विवरण
1

before

विधि निष्पादन से पहले सलाह चलाएँ।

2

after

विधि निष्पादन के बाद सलाह चलाएँ, चाहे उसका परिणाम कुछ भी हो।

3

after-returning

विधि निष्पादन के बाद सलाह चलाएँ, यदि विधि सफलतापूर्वक पूर्ण हो जाती है।

4

after-throwing

विधि निष्पादन के बाद सलाह चलाएं, केवल तभी जब विधि अपवाद को फेंककर बाहर निकल जाए।

5

around

सलाह दी गई विधि से पहले और बाद में सलाह चलाएँ।

वसंत समर्थन करता है @AspectJ annotation style दृष्टिकोण और schema-based कस्टम पहलुओं को लागू करने के लिए दृष्टिकोण।

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 ">

   <!-- bean definition & AOP specific configuration -->

</beans>

एक पहलू की घोषणा

एक aspect का उपयोग करके घोषित किया गया है <aop:aspect> तत्व, और बैकिंग बीन का उपयोग करके संदर्भित किया जाता है ref विशेषता इस प्रकार है।

<aop:config>
   <aop:aspect id = "myAspect" ref = "aBean">
   ...
   </aop:aspect>
</aop:config>

<bean id = "aBean" class = "...">
   ...
</bean>

यहां "अनियन" कॉन्फ़िगर किया जाएगा और निर्भरता को किसी भी अन्य स्प्रिंग बीन की तरह इंजेक्ट किया जाएगा जैसा कि आपने पिछले अध्यायों में देखा है।

एक PointCut घोषणा

PointCutअलग-अलग सलाह के साथ निष्पादित किए जाने वाले ब्याज के सम्मिलित बिंदुओं (अर्थात तरीकों) को निर्धारित करने में मदद करता है। XML स्कीमा आधारित कॉन्फ़िगरेशन के साथ काम करते समय, प्वाइंटकुट को इस प्रकार परिभाषित किया जाएगा -

<aop:config>
   <aop:aspect id = "myAspect" ref = "aBean">

   <aop:PointCut id = "businessService"
      expression = "execution(* com.xyz.myapp.service.*.*(..))"/>
      ...
   </aop:aspect>
</aop:config>

<bean id = "aBean" class = "...">
   ...
</bean>

निम्न उदाहरण 'BusinessService' नाम के एक पॉइंटकॉट को परिभाषित करता है जो पैकेज com.tutorialspoint के तहत छात्र वर्ग में उपलब्ध getName () विधि के निष्पादन से मेल खाएगा।

<aop:config>
   <aop:aspect id = "myAspect" ref = "aBean">

   <aop:PointCut id = "businessService"
      expression = "execution(* com.tutorialspoint.Student.getName(..))"/>
   ...
   </aop:aspect>
</aop:config>

<bean id = "aBean" class = "...">
   ...
</bean>

घोषणाओं की घोषणा

आप निम्न में से किसी भी पांच सलाह को <aop: एस्पेक्ट> <aop: {ADVICE NAME}> एलिमेंट के जरिए घोषित कर सकते हैं।

<aop:config>
   <aop:aspect id = "myAspect" ref = "aBean">
      <aop:PointCut id = "businessService"
         expression = "execution(* com.xyz.myapp.service.*.*(..))"/>

      <!-- a before advice definition -->
      <aop:before PointCut-ref = "businessService" 
         method = "doRequiredTask"/>

      <!-- an after advice definition -->
      <aop:after PointCut-ref = "businessService" 
         method = "doRequiredTask"/>

      <!-- an after-returning advice definition -->
      <!--The doRequiredTask method must have parameter named retVal -->
      <aop:after-returning PointCut-ref = "businessService"
         returning = "retVal"
         method = "doRequiredTask"/>

      <!-- an after-throwing advice definition -->
      <!--The doRequiredTask method must have parameter named ex -->
      <aop:after-throwing PointCut-ref = "businessService"
        throwing = "ex"
         method = "doRequiredTask"/>

      <!-- an around advice definition -->
      <aop:around PointCut-ref = "businessService" 
         method = "doRequiredTask"/>
   ...
   </aop:aspect>
</aop:config>

<bean id = "aBean" class = "...">
   ...
</bean>

आप उसी का उपयोग कर सकते हैं doRequiredTaskया अलग-अलग सलाह के लिए अलग-अलग तरीके। इन विधियों को पहलू मॉड्यूल के एक भाग के रूप में परिभाषित किया जाएगा।

@AspectJ आधारित

@AspectJ जावा 5 एनोटेशन के साथ नियमित जावा कक्षाओं के रूप में पहलुओं को घोषित करने की शैली को संदर्भित करता है। आपकी XML स्कीमा-आधारित कॉन्फ़िगरेशन फ़ाइल के अंदर @AspectJ समर्थन को निम्नलिखित तत्व शामिल करके सक्षम किया गया है।

<aop:aspectj-autoproxy/>

एक पहलू की घोषणा

पहलू वर्ग किसी भी अन्य सामान्य बीन की तरह हैं और किसी भी अन्य वर्ग की तरह ही तरीके और क्षेत्र हो सकते हैं, सिवाय इसके कि वे @Aspect के साथ निम्नानुसार एनोटेट होंगे।

package org.xyz;

import org.aspectj.lang.annotation.Aspect;

@Aspect
public class AspectModule {

}

उन्हें एक्सएमएल में किसी अन्य बीन की तरह कॉन्फ़िगर किया जाएगा।

<bean id = "myAspect" class = "org.xyz.AspectModule">
   <!-- configure properties of aspect here as normal -->
</bean>

एक PointCut घोषणा

PointCutअलग-अलग सलाह के साथ निष्पादित किए जाने वाले ब्याज के सम्मिलित बिंदुओं (अर्थात तरीकों) को निर्धारित करने में मदद करता है। @AspectJ आधारित विन्यास के साथ काम करते समय, प्वाइंटकुट घोषणा में दो भाग होते हैं -

  • एक पॉइंटकट अभिव्यक्ति जो यह निर्धारित करती है कि कौन सी विधि निष्पादित होती है जिसमें हम रुचि रखते हैं।

  • एक PointCut हस्ताक्षर जिसमें एक नाम और कई पैरामीटर शामिल हैं। विधि का वास्तविक शरीर अप्रासंगिक है और वास्तव में खाली होना चाहिए।

निम्न उदाहरण 'बिज़नेस सर्विस' नाम के एक पॉइंटकूट को परिभाषित करता है जो संकुल com.xyz.myapp.service के तहत कक्षाओं में उपलब्ध हर विधि के निष्पादन से मेल खाएगा।

import org.aspectj.lang.annotation.PointCut;

@PointCut("execution(* com.xyz.myapp.service.*.*(..))") // expression 
private void businessService() {}  // signature

निम्न उदाहरण 'getname' नाम के एक पॉइंटकूट को परिभाषित करता है जो पैकेज com.tutorialspoint के तहत छात्र वर्ग में उपलब्ध getName () विधि के निष्पादन से मेल खाएगा।

import org.aspectj.lang.annotation.PointCut;

@PointCut("execution(* com.tutorialspoint.Student.getName(..))") 
private void getname() {}

घोषणाओं की घोषणा

आप नीचे दिए गए अनुसार @ {ADVICE-NAME} एनोटेशन का उपयोग करके किसी भी पांच सलाह की घोषणा कर सकते हैं। यह मानता है कि आपने पहले से ही एक प्वाइंटसूट हस्ताक्षर विधि बिज़नेस सर्विस () को परिभाषित किया है।

@Before("businessService()")
public void doBeforeTask(){
   ...
}

@After("businessService()")
public void doAfterTask(){
   ...
}

@AfterReturning(PointCut = "businessService()", returning = "retVal")
public void doAfterReturnningTask(Object retVal){
   // you can intercept retVal here.
   ...
}

@AfterThrowing(PointCut = "businessService()", throwing = "ex")
public void doAfterThrowingTask(Exception ex){
   // you can intercept thrown exception here.
   ...
}

@Around("businessService()")
public void doAroundTask(){
   ...
}

आप किसी भी सलाह के लिए पॉइंटकॉट इनलाइन को परिभाषित कर सकते हैं। निम्नलिखित सलाह से पहले इनलाइन प्वाइंटकुट को परिभाषित करने के लिए एक उदाहरण है।

@Before("execution(* com.xyz.myapp.service.*.*(..))")
public doBeforeTask(){
   ...
}

इस अध्याय में, हम स्प्रिंग AOP फ्रेमवर्क का उपयोग करके वास्तविक AOP एप्लिकेशन लिखेंगे। इससे पहले कि आप स्प्रिंग-डब्लूएस फ्रेमवर्क का उपयोग करके अपना पहला उदाहरण लिखना शुरू करें, आपको यह सुनिश्चित करना होगा कि आपने अपने स्प्रिंग एओपी वातावरण को ठीक से सेट किया है जैसा कि स्प्रिंग वेब सर्विसेज - एन्वायरमेंट सेटअप अध्याय में बताया गया है ।

अब, एक साधारण कंसोल-एस्ड स्प्रिंग एओपी एप्लिकेशन लिखने के लिए आगे बढ़ें, जो एओपी अवधारणाओं को प्रदर्शित करेगा।

एक प्रोजेक्ट बनाएं

Step 1 - एक कमांड कंसोल खोलें, C: \ MVN निर्देशिका पर जाएं और निम्नलिखित को निष्पादित करें mvn आदेश।

C:\MVN>mvn archetype:generate -DgroupId = com.tutorialspoint -DartifactId = Student
	-DarchetypeArtifactId = maven-archetype-quickstart -DinteractiveMode = false

मावेन प्रसंस्करण शुरू कर देगा और संपूर्ण जावा एप्लीकेशन प्रोजेक्ट संरचना तैयार करेगा।

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.4:generate (default-cli) > generate-sources
@ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.4:generate (default-cli) < generate-sources
@ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.4:generate (default-cli) @ standalone-pom --
-
[INFO] Generating project in Batch mode
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/ma
ven-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/mav
en-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.jar (5 KB at 1.1 KB/s
ec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/ma
ven-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/archetypes/mav
en-archetype-quickstart/1.0/maven-archetype-quickstart-1.0.pom (703 B at 1.2 KB/
sec)
[INFO] -------------------------------------------------------------------------
---
[INFO] Using following parameters for creating project from Old (1.x) Archetype:
 maven-archetype-quickstart:1.0
[INFO] -------------------------------------------------------------------------
---
[INFO] Parameter: groupId, Value: com.tutorialspoint
[INFO] Parameter: packageName, Value: com.tutorialspoint
[INFO] Parameter: package, Value: com.tutorialspoint
[INFO] Parameter: artifactId, Value: Student
[INFO] Parameter: basedir, Value: C:\MVN
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: C:\MVN\Student
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:17 min
[INFO] Finished at: 2017-02-19T21:11:14+05:30
[INFO] Final Memory: 15M/114M
[INFO] ------------------------------------------------------------------------

Step 2- C: / MVN निर्देशिका पर जाएं। आपको बनाया गया एक जावा एप्लिकेशन प्रोजेक्ट दिखाई देगा, जिसका नाम स्टूडेंट होगा (जैसा कि विरूपण साक्ष्य में निर्दिष्ट है)। स्प्रिंग-एओपी निर्भरता को शामिल करने के लिए POM.xml को अपडेट करें। MainApp.java, Student.java, और Logging.java फाइलें जोड़ें।

POM.xml

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.tutorialspoint</groupId>
   <artifactId>Student</artifactId>
   <packaging>jar</packaging>
   <version>1.0-SNAPSHOT</version>
   <name>Student</name>
   <url>http://maven.apache.org</url>
   
   <dependencies>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>3.8.1</version>
         <scope>test</scope>
      </dependency>
      
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-aop</artifactId>
         <version>4.1.0.RELEASE</version>
      </dependency>
      
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>4.1.4.RELEASE</version>
      </dependency>
      
      <dependency>
         <groupId>org.aspectj</groupId>
         <artifactId>aspectjweaver</artifactId>
         <version>1.6.8</version>
      </dependency>
      
   </dependencies>
</project>
package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   public void beforeAdvice() {
      System.out.println("Going to setup student profile.");
   }

   /** 
    * This is the method which I would like to execute
    * after a selected method execution.
    */
   public void afterAdvice() {
      System.out.println("Student profile has been setup.");
   }

   /** 
    * This is the method which I would like to execute
    * when any method returns.
    */
   public void afterReturningAdvice(Object retVal){
      System.out.println("Returning:" + retVal.toString() );
   }

   /**
    * 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.getName();
      student.getAge();
      
      student.printThrowException();
   }
}

Step 3 - कॉन्फ़िगरेशन फ़ाइल जोड़ें Beans.xml के अंतर्गत src > main > resources फ़ोल्डर।

<?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:before PointCut-ref = "selectAll" method = "beforeAdvice"/>
         <aop:after PointCut-ref = "selectAll" method = "afterAdvice"/>
         <aop:after-returning PointCut-ref = "selectAll" 
            returning = "retVal"
            method = "afterReturningAdvice"/>
         <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>

Step 4 - कमांड कंसोल खोलें, C: \ MVN निर्देशिका पर जाएं और निम्नलिखित को निष्पादित करें mvn आदेश।

C:\MVN>Student> mvn package

मावेन प्रसंस्करण और आवश्यक पुस्तकालयों को डाउनलोड करना शुरू कर देगा।

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Student 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-jar-plugin/2.4/maven-jar-plugin-2.4.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-
jar-plugin/2.4/maven-jar-plugin-2.4.pom (6 KB at 2.2 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven
-jar-plugin/2.4/maven-jar-plugin-2.4.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-
jar-plugin/2.4/maven-jar-plugin-2.4.jar (34 KB at 31.6 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-aop
/4.1.0.RELEASE/spring-aop-4.1.0.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/spring-aop/
4.1.0.RELEASE/spring-aop-4.1.0.RELEASE.pom (3 KB at 3.7 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-bea
ns/4.1.0.RELEASE/spring-beans-4.1.0.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/spring-bean
s/4.1.0.RELEASE/spring-beans-4.1.0.RELEASE.pom (3 KB at 4.1 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-cor
e/4.1.0.RELEASE/spring-core-4.1.0.RELEASE.pom
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/spring-core
/4.1.0.RELEASE/spring-core-4.1.0.RELEASE.pom (3 KB at 4.0 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-aop
/4.1.0.RELEASE/spring-aop-4.1.0.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-cor
e/4.1.0.RELEASE/spring-core-4.1.0.RELEASE.jar
Downloading: https://repo.maven.apache.org/maven2/org/springframework/spring-bea
ns/4.1.0.RELEASE/spring-beans-4.1.0.RELEASE.jar
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/spring-aop/
4.1.0.RELEASE/spring-aop-4.1.0.RELEASE.jar (351 KB at 43.9 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/spring-bean
s/4.1.0.RELEASE/spring-beans-4.1.0.RELEASE.jar (685 KB at 37.5 KB/sec)
Downloaded: https://repo.maven.apache.org/maven2/org/springframework/spring-core
/4.1.0.RELEASE/spring-core-4.1.0.RELEASE.jar (982 KB at 47.1 KB/sec)
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Student --
-
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\Student\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Student ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. b
uild is platform dependent!
[INFO] Compiling 1 source file to C:\MVN\Student\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ St
udent ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources,
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\MVN\Student\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ Student
 ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. b
uild is platform dependent!
[INFO] Compiling 1 source file to C:\MVN\Student\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ Student ---
[INFO] Surefire report directory: C:\MVN\Student\target\surefire-reports
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/sure
fire-junit3/2.12.4/surefire-junit3-2.12.4.pom
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/suref
ire-junit3/2.12.4/surefire-junit3-2.12.4.pom (2 KB at 1.3 KB/sec)
Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/sure
fire-junit3/2.12.4/surefire-junit3-2.12.4.jar
Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/surefire/suref
ire-junit3/2.12.4/surefire-junit3-2.12.4.jar (26 KB at 27.7 KB/sec)

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.tutorialspoint.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ Student ---
Downloading: https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-al
pha-2/classworlds-1.1-alpha-2.jar
Downloaded: https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alp
ha-2/classworlds-1.1-alpha-2.jar (37 KB at 35.8 KB/sec)
[INFO] Building jar: C:\MVN\Student\target\Student-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38.441 s
[INFO] Finished at: 2017-02-19T21:18:59+05:30
[INFO] Final Memory: 18M/109M
[INFO] ------------------------------------------------------------------------

ग्रहण में आयात परियोजना

Step 1 - ग्रहण खोलें।

Step 2 - चयन करें File → Import → विकल्प।

Step 3- मावेन प्रोजेक्ट्स विकल्प चुनें। नेक्स्ट बटन पर क्लिक करें।

Step 4 - प्रोजेक्ट स्थान का चयन करें, जहां छात्र परियोजना का निर्माण मावेन का उपयोग करके किया गया था।

Step 5 - समाप्त बटन पर क्लिक करें।

प्रोजेक्ट चलाएं

एक बार जब आप स्रोत और कॉन्फ़िगरेशन फ़ाइलों का निर्माण कर लेते हैं, तो अपना एप्लिकेशन चलाएं। अपने आवेदन और उपयोग में MainApp.java पर राइट क्लिक करेंrun as Java Applicationआदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Student profile has been setup.
Returning:Zara
Going to setup student profile.
Age : 11
Student profile has been setup.
Returning:11
Going to setup student profile.
Exception raised
Student profile has been setup.
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.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:43) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:52) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 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$$56a970f2.printThrowException(<generated>)
   
   at com.tutorialspoint.MainApp.main(MainApp.java:16)

बिंदु में शामिल हों

एक JoinPoint आपके आवेदन में एक बिंदु का प्रतिनिधित्व करता है जहां आप AOP पहलू को प्लग-इन कर सकते हैं। आप यह भी कह सकते हैं, यह आवेदन में वास्तविक स्थान है जहां स्प्रिंग एओपी ढांचे का उपयोग करके एक कार्रवाई की जाएगी। निम्नलिखित उदाहरणों पर विचार करें -

  • सभी विधियाँ एक पैकेज (एस) में निहित हैं।

  • एक वर्ग के एक विशेष तरीके।

PointCut

प्वाइंटकुट एक या एक से अधिक जॉइंटपॉइंट्स का एक सेट है जहां एक सलाह पर अमल किया जाना चाहिए। आप भाव या पैटर्न का उपयोग करके पॉइंटकैट्स निर्दिष्ट कर सकते हैं जैसा कि हम अपने एओपी उदाहरणों में देखेंगे। वसंत में, पॉइंटकुट सलाह को लागू करने के लिए विशिष्ट JoinPoints का उपयोग करने में मदद करता है। निम्नलिखित उदाहरणों पर विचार करें -

  • अभिव्यक्ति = "निष्पादन (* com.tutorialspoint। *। * (..))"

  • अभिव्यक्ति = "निष्पादन (* com.tutorialspoint.Student.getName (..))"

वाक्य - विन्यास

<aop:config>
   <aop:aspect id = "log" ref = "adviceClass">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
   </aop:aspect>
</aop:config>

कहाँ पे,

  • adviceClass - सलाह विधियों वाले वर्ग का संदर्भ

  • PointCut-id - प्वाइंटकॉट की आईडी

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

JoinPoint और PointCut से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, आइए हम एक उदाहरण लिखते हैं जो कुछ बिंदुओं को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }   
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:before PointCut-ref = "selectAll" method = "beforeAdvice"/>         
      </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>

एक बार जब आप स्रोत और बीन कॉन्फ़िगरेशन फ़ाइलों को बनाने के साथ किया जाता है, तो एप्लिकेशन चलाएं। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Going to setup student profile.
Age : 11

उपरोक्त परिभाषित <aop: pointcut> पैकेज com.tutorialspoint के तहत परिभाषित सभी विधियों का चयन करता है। मान लें कि, आप किसी विशेष विधि से पहले या बाद में अपनी सलाह पर अमल करना चाहते हैं, तो आप पॉइंटकूट परिभाषा में वास्तविक वर्ग और विधि नामों के साथ सितारों (*) को प्रतिस्थापित करके अपने निष्पादन को कम करने के लिए अपने पॉइंटकुट को परिभाषित कर सकते हैं। अवधारणा को दिखाने के लिए एक संशोधित एक्सएमएल विन्यास फाइल है।

<?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.Student.getName(..))"/>
         <aop:before PointCut-ref = "selectAll" method = "beforeAdvice"/>
      </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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Age : 11

Beforeएक सलाह प्रकार है जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन से पहले चलती है। निम्नलिखित सलाह से पहले वाक्य रचना है।

वाक्य - विन्यास

<aop:config>
   <aop:aspect id = "log" ref = "logging">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
      <aop:before PointCut-ref = "PointCut-id" method = "methodName"/>
   </aop:aspect>
</aop:config>

कहाँ पे,

  • PointCut-id - प्वाइंटकॉट की आईडी।

  • methodName - फंक्शन का मेथड नाम एक फंक्शन से पहले कॉल किया जाना है।

बिफोर एडवाइस से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं, जो एडवाइस से पहले लागू होगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }   
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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.Student.getName(..))"/>
         <aop:before PointCut-ref = "selectAll" method = "beforeAdvice"/>
      </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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Age : 11

Afterएक सलाह प्रकार है जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन के बाद चलती है। निम्नलिखित सलाह के बाद वाक्य रचना है।

वाक्य - विन्यास

<aop:config>
   <aop:aspect id = "log" ref = "logging">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
      <aop:after PointCut-ref = "PointCut-id" method = "methodName"/>
   </aop:aspect>
</aop:config>

कहाँ पे,

  • PointCut-id - प्वाइंटकॉट की आईडी।

  • methodName - फ़ंक्शन का विधि का नाम किसी फ़ंक्शन के बाद कॉल किया जाना है।

आफ्टर एडवाइस से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, आइए एक उदाहरण लिखें जो आफ्टर एडवाइस को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * after a selected method execution.
    */
   public void afterAdvice(){
      System.out.println("Student profile setup complete.");
   }   
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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.Student.getAge(..))"/>
         <aop:after PointCut-ref = "selectAll" method = "afterAdvice"/>
      </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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Name : Zara
Age : 11
Student profile setup complete.

Afterएक सलाह प्रकार है जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन के बाद ही चलती है यदि विधि सफलतापूर्वक पूर्ण होती है। निम्नलिखित सलाह के बाद वाक्य रचना है।

वाक्य - विन्यास

<aop:config>
   <aop:aspect id = "log" ref = "logging">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
      <aop:after-returning PointCut-ref = "PointCut-id" 
         returning = "retVal" method = "methodName"/>
   </aop:aspect>
</aop:config>

कहाँ पे,

  • PointCut-id - प्वाइंटकॉट की आईडी।

  • methodName - फंक्शन का मेथड नाम, जिसे किसी फंक्शन फंक्शन के सफल होने के बाद कॉल किया जाता है

आफ्टर रिटर्निंग एडवाइस से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो रिटर्निंग सलाह के बाद लागू होगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में काम करने वाली ग्रहण आईडीई है और स्प्रिंग नंबर बनाने के लिए निम्न चरणों का उपयोग करें -

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * when any method returns.
    */
   public void afterReturningAdvice(Object retVal){
      System.out.println("Returning:" + retVal.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 );
      System.out.println("Exception raised");
      throw new IllegalArgumentException();
      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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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-returning PointCut-ref = "selectAll" 
            method = "afterReturningAdvice" returning = "retVal"/>         
      </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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Name : Zara
Returning : Name
Age : 11
Exception raised

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)

Aroundएक सलाह प्रकार है जो यह सुनिश्चित करता है कि विधि निष्पादन से पहले और बाद में एक सलाह चलती है। निम्नलिखित सलाह का सिंटैक्स है।

वाक्य - विन्यास

<aop:config>
   <aop:aspect id = "log" ref = "logging">
      <aop:PointCut id = "PointCut-id" expression = "execution( expression )"/>    
      <aop:around PointCut-ref = "PointCut-id" method = "methodName"/>
   </aop:aspect>
</aop:config>

कहाँ पे,

  • PointCut-id - प्वाइंटकॉट की आईडी।

  • methodName - फंक्शन का मेथड नाम एक फंक्शन से पहले कॉल किया जाना है।

अराउंड एडवाइस से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो लगभग सलाह को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में काम करने वाली ग्रहण आईडीई है और स्प्रिंग नंबर बनाने के लिए निम्न चरणों का उपयोग करें -

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;
import org.aspectj.lang.ProceedingJoinPoint;

public class Logging {

   /** 
    * This is the method which I would like to execute
    * around a selected method execution.
    */
   public String aroundAdvice(ProceedingJoinPoint jp) throws Throwable{
      System.out.println("Around advice");
      Object[] args = jp.getArgs();
      if(args.length>0){
         System.out.print("Arguments passed: " );
         for (int i = 0; i < args.length; i++) {
            System.out.print("arg "+(i+1)+": "+args[i]);
         }
      }

      Object result = jp.proceed(args);
      System.out.println("Returning " + result);
      return result.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.getName();    
   }
}

निम्नलिखित विन्यास फाइल है 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 = "selectName" 
            expression = "execution(* com.tutorialspoint.Student.getName(..))"/>
         <aop:around PointCut-ref = "selectName" method = "aroundAdvice"/>
      </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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Around advice
Name : Zara
Returning Zara

आइए हम एक उदाहरण लिखते हैं जो एनोटेशन आधारित कॉन्फ़िगरेशन का उपयोग करके सलाह को लागू करेगा। इसके लिए, हमारे पास कार्यशील ग्रहण आईडीई है और स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.PointCut;

@Aspect
public class Logging {

   /** Following is the definition for a PointCut to select
    *  all the methods available. So advice will be called
    *  for all the methods.
    */
   @PointCut("execution(* com.tutorialspoint.*.*(..))")
   private void selectAll(){}

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   @Before("selectAll()")
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }  
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();   
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Going to setup student profile.
Age : 11

JoinPoint

एक JoinPoint आपके आवेदन में एक बिंदु का प्रतिनिधित्व करता है जहां आप AOP पहलू को प्लग-इन कर सकते हैं। आप यह भी कह सकते हैं, यह आवेदन में वास्तविक स्थान है जहां स्प्रिंग एओपी ढांचे का उपयोग करके एक कार्रवाई की जाएगी। निम्नलिखित उदाहरणों पर विचार करें -

  • सभी विधियाँ एक पैकेज (एस) में निहित हैं।

  • एक वर्ग के एक विशेष तरीके।

PointCut

PointCut एक या एक से अधिक JoinPoint का एक सेट है जहां एक सलाह को निष्पादित किया जाना चाहिए। आप भाव या पैटर्न का उपयोग करके पॉइंटकैट्स निर्दिष्ट कर सकते हैं जैसा कि हम अपने एओपी उदाहरणों में देखेंगे। वसंत में, पॉइंटकुट सलाह को लागू करने के लिए विशिष्ट JoinPoints का उपयोग करने में मदद करता है। निम्नलिखित उदाहरणों पर विचार करें -

  • @PointCut ("निष्पादन (* com.tutorialspoint। *। * (..))")

  • @PointCut ("निष्पादन (* com.tutorialspoint.Student.getName (..))")

वाक्य - विन्यास

@Aspect
public class Logging {

   @PointCut("execution(* com.tutorialspoint.*.*(..))")
   private void selectAll(){}

}

कहाँ पे,

  • @Aspect - सलाह विधियों से युक्त वर्ग के रूप में एक वर्ग को चिह्नित करें।

  • @PointCut - प्वाइंटकुट के रूप में एक समारोह को चिह्नित करें

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

JoinPoint और PointCut से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, आइए हम एक उदाहरण लिखते हैं जो कुछ बिंदुओं को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में काम करने वाली ग्रहण आईडीई है और स्प्रिंग नंबर बनाने के लिए निम्न चरणों का उपयोग करें -

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.PointCut;
import org.aspectj.lang.annotation.Before;

@Aspect
public class Logging {

   /** Following is the definition for a PointCut to select
    *  all the methods available. So advice will be called
    *  for all the methods.
    */
   @PointCut("execution(* com.tutorialspoint.*.*(..))")
   private void selectAll(){}

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   @Before("selectAll()")
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }  
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Going to setup student profile.
Age : 11

उपरोक्त परिभाषित @Pointcut पैकेज com.tutorialspoint के तहत परिभाषित सभी विधियों का चयन करने के लिए एक अभिव्यक्ति का उपयोग करता है। @ उपरोक्त सलाह एक पैरामीटर के रूप में उपर्युक्त पॉइंटकट का उपयोग करती है। प्रभावी रूप से पहले पॉइंटविट () पद्धति को प्वाइंटकूट द्वारा ऊपर कवर की गई प्रत्येक विधि से पहले बुलाया जाएगा।

@Beforeएक सलाह प्रकार है जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन से पहले चलती है। निम्नलिखित @ सलाह की वाक्य रचना है।

वाक्य - विन्यास

@PointCut("execution(* com.tutorialspoint.Student.getName(..))")
private void selectGetName(){}

@Before("selectGetName()")
public void beforeAdvice(){
   System.out.println("Going to setup student profile.");
}

कहाँ पे,

  • @PointCut - प्वाइंटकुट के रूप में एक समारोह को चिह्नित करें

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

  • @Before - प्वाइंटकूट द्वारा कवर विधि (एस) से पहले निष्पादित करने के लिए एक सलाह के रूप में एक समारोह को चिह्नित करें।

@Before सलाह से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो @Before सलाह को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में काम करने वाली ग्रहण आईडीई है और स्प्रिंग नंबर बनाने के लिए निम्न चरणों का उपयोग करें -

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.PointCut;
import org.aspectj.lang.annotation.Before;

@Aspect
public class Logging {

   /** Following is the definition for a PointCut to select
    *  all the methods available. So advice will be called
    *  for all the methods.
    */
   @PointCut("execution(* com.tutorialspoint.Student.getName(..))")
   private void selectGetName(){}

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   @Before("selectGetName()")
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }  
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Age : 11

उपरोक्त परिभाषित @Pointcut पैकेज com.tutorialspoint के तहत कक्षा (तों) में परिभाषित विधि getAge () को चुनने के लिए एक अभिव्यक्ति का उपयोग करता है। @ सलाह के बाद एक पैरामीटर के रूप में उपरोक्त परिभाषित बिंदु का उपयोग करता है। उपरोक्त प्वाइंट द्वारा कवर की गई प्रत्येक विधि से पहले AdAdvice () पद्धति को प्रभावी रूप से कहा जाएगा।

@Afterएक सलाह प्रकार है जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन के बाद चलती है। निम्नलिखित @ सलाह के बाद वाक्य रचना है।

वाक्य - विन्यास

@PointCut("execution(* com.tutorialspoint.Student.getAge(..))")
private void selectGetName(){}

@After("selectGetAge()")
public void afterAdvice(){
   System.out.println("Student profile setup completed.");
}

कहाँ पे,

  • @PointCut - प्वाइंटकुट के रूप में एक समारोह को चिह्नित करें

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

  • @After - प्वाइंटकूट द्वारा कवर विधि (एस) से पहले निष्पादित करने के लिए एक सलाह के रूप में एक समारोह को चिह्नित करें।

@ सलाह के बाद से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो @ सलाह के बाद लागू होगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.PointCut;
import org.aspectj.lang.annotation.After;

@Aspect
public class Logging {

   /** Following is the definition for a PointCut to select
    *  all the methods available. So advice will be called
    *  for all the methods.
    */
   @PointCut("execution(* com.tutorialspoint.Student.getAge(..))")
   private void selectGetAge(){}

   /** 
    * This is the method which I would like to execute
    * after a selected method execution.
    */
   @After("selectGetAge()")
   public void afterAdvice(){
      System.out.println("Student profile setup completed.");
   }  
}

निम्नलिखित की सामग्री है 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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Name : Zara
Age : 11
Student profile setup completed.

उपरोक्त परिभाषित @Pointcut पैकेज com.tutorialspoint के तहत कक्षा (तों) में परिभाषित विधि getAge () को चुनने के लिए एक अभिव्यक्ति का उपयोग करता है। @ सलाह के बाद एक पैरामीटर के रूप में उपरोक्त परिभाषित बिंदु का उपयोग करता है। उपरोक्त प्वाइंट द्वारा कवर की गई प्रत्येक विधि से पहले AdAdvice () पद्धति को प्रभावी रूप से कहा जाएगा।

@AfterReturningएक सलाह प्रकार है, जो यह सुनिश्चित करता है कि विधि सफलतापूर्वक निष्पादित होने के बाद एक सलाह चलती है। निम्नलिखित @ सलाह के वाक्य रचना है।

वाक्य - विन्यास

@AfterReturning(PointCut = "execution(* com.tutorialspoint.Student.*(..))", 
   returning = "retVal")
public void afterReturningAdvice(JoinPoint jp, Object retVal){
   System.out.println("Method Signature: "  + jp.getSignature());  
   System.out.println("Returning:" + retVal.toString() );
}

कहाँ पे,

  • @AfterReturning - विधि के सफलतापूर्वक क्रियान्वित होने से पहले विधि द्वारा निष्पादित किए जाने वाले सलाह के रूप में एक फ़ंक्शन को चिह्नित करें, यदि विधि सफलतापूर्वक वापस आती है।

  • PointCut - एक समारोह का चयन करने के लिए एक अभिव्यक्ति प्रदान करता है

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

  • returning - लौटाए जाने वाले चर का नाम।

@AfterRurnurning सलाह से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं, जो @AfterReturning सलाह को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.JoinPoint;  
import org.aspectj.lang.annotation.AfterReturning; 

@Aspect
public class Logging {

   /** 
    * This is the method which I would like to execute
    * after a selected method execution.
    */
   @AfterReturning(PointCut = "execution(* com.tutorialspoint.Student.*(..))", 
      returning = "retVal")
   public void afterReturningAdvice(JoinPoint jp, Object retVal){
      System.out.println("Method Signature: "  + jp.getSignature());  
      System.out.println("Returning:" + retVal.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.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Age : 11
Method Signature: Integer com.tutorialspoint.Student.getAge()  
Returning 11

@AfterThrowingएक सलाह प्रकार है जो यह सुनिश्चित करता है कि यदि कोई अपवाद अपवाद करता है तो एक सलाह चलती है। निम्नलिखित @ सलाह के बाद वाक्य रचना है।

वाक्य - विन्यास

@AfterThrowing(PointCut = "execution(* com.tutorialspoint.Student.*(..))", 
   throwing = "error")
public void afterThrowingAdvice(JoinPoint jp, Throwable error){
   System.out.println("Method Signature: "  + jp.getSignature());  
   System.out.println("Exception: "+error);  
}

कहाँ पे,

  • @AfterThrowing - विधि को अपवाद के रूप में फेंकने से पहले प्वाइंटक्यूट द्वारा कवर विधि (एस) से पहले निष्पादित होने की सलाह के रूप में एक फ़ंक्शन को चिह्नित करें।

  • PointCut - एक समारोह का चयन करने के लिए एक अभिव्यक्ति प्रदान करता है।

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

  • throwing - लौटाए जाने वाले अपवाद का नाम।

@ सलाह के बाद से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो @ सलाह के बाद लागू होगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.JoinPoint;  
import org.aspectj.lang.annotation.AfterThrowing;  

@Aspect
public class Logging {

   /** 
    * This is the method which I would like to execute
    * after a selected method execution throws exception.
    */
   @AfterThrowing(PointCut = "execution(* com.tutorialspoint.Student.*(..))", 
      throwing = "error")
   public void afterThrowingAdvice(JoinPoint jp, Throwable error){
      System.out.println("Method Signature: "  + jp.getSignature());  
      System.out.println("Exception: "+error);  
   }
}

निम्नलिखित की सामग्री है 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:aspectj-autoproxy/>

   <!-- 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
Method Signature: void com.tutorialspoint.Student.printThrowException()
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$$99b0a988.printThrowException(<generated>)
   
   at com.tutorialspoint.MainApp.main(MainApp.java:13)

@Aroundएक सलाह प्रकार है, जो यह सुनिश्चित करता है कि एक सलाह विधि के निष्पादन से पहले और बाद में चल सकती है। निम्नलिखित @ सलाह के सिंटैक्स है।

वाक्य - विन्यास

@PointCut("execution(* com.tutorialspoint.Student.getAge(..))")
private void selectGetName(){}

@Around("selectGetAge()")
public void aroundAdvice(ProceedingJoinPoint proceedingJoinPoint){
   System.out.println("Around advice");
   Object[] args = jp.getArgs();
   if(args.length>0){
      System.out.print("Arguments passed: " );
      for (int i = 0; i < args.length; i++) {
         System.out.print("arg "+(i+1)+": "+args[i]);
      }
   }

   Object result = jp.proceed(args);
   System.out.println("Returning " + result);
   return result.toString();   
}

कहाँ पे,

  • @PointCut - प्वाइंटकुट के रूप में एक समारोह को चिह्नित करें

  • execution( expression ) - एक्सप्रेशन कवरिंग के तरीके, जिस पर सलाह लागू की जानी है।

  • @Around - प्वाइंटकूट द्वारा कवर विधि (एस) से पहले निष्पादित करने के लिए एक सलाह के रूप में एक समारोह को चिह्नित करें।

@Around Advice से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो @Around Advice को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में काम करने वाली ग्रहण आईडीई है और स्प्रिंग नंबर बनाने के लिए निम्न चरणों का उपयोग करें -

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.PointCut;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.ProceedingJoinPoint; 

@Aspect
public class Logging {

   /** Following is the definition for a PointCut to select
    *  all the methods available. So advice will be called
    *  for all the methods.
    */
   @PointCut("execution(* com.tutorialspoint.Student.getAge(..))")
   private void selectGetAge(){}

   /** 
    * This is the method which I would like to execute
    * around a selected method execution.
    */
   @Around("selectGetAge()")
   public void aroundAdvice(ProceedingJoinPoint proceedingJoinPoint) throws Throwable{
      System.out.println("Around advice");
      Object[] args = proceedingJoinPoint.getArgs();
      if(args.length>0){
         System.out.print("Arguments passed: " );
         for (int i = 0; i < args.length; i++) {
            System.out.print("arg "+(i+1)+": "+args[i]);
         }
      }

      Object result = proceedingJoinPoint.proceed(args);
      System.out.println("Returning " + result);
   }  
}

निम्नलिखित की सामग्री है 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.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Around advice
Age : 11
Returning 11

अब तक, हमने पहलुओं का उपयोग करके घोषित किया है <aop:config> या < aop:aspectj-autoproxy>। हम प्रॉक्सी प्रोग्राम का उपयोग कर सकते हैं और साथ ही प्रॉक्सी ऑब्जेक्ट का उपयोग करके प्रोग्राम के पहलुओं को लागू कर सकते हैं।

वाक्य - विन्यास

//Create object to be proxied
Student student = new Student();

//Create the Proxy Factory
AspectJProxyFactory proxyFactory = new AspectJProxyFactory(student);

//Add Aspect class to the factory
proxyFactory.addAspect(Logging.class);

//Get the proxy object
Student proxyStudent = proxyFactory.getProxy();

//Invoke the proxied method.
proxyStudent.getAge();

कहाँ पे,

  • AspectJProxyFactory - प्रॉक्सी ऑब्जेक्ट बनाने के लिए फ़ैक्टरी क्लास।

  • Logging.class - पहलू युक्त वर्ग की सलाह।

  • Student - बिजनेस क्लास को सलाह दी जाए।

प्रॉक्सी से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो प्रॉक्सी को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास जगह में काम करने वाली ग्रहण आईडीई है और स्प्रिंग नंबर बनाने के लिए निम्न चरणों का उपयोग करें -

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.PointCut;
import org.aspectj.lang.annotation.Before;

@Aspect
public class Logging {

   /** Following is the definition for a PointCut to select
    *  all the methods available. So advice will be called
    *  for all the methods.
    */
   @PointCut("execution(* com.tutorialspoint.Student.getAge(..))")
   private void selectGetAge(){}

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   @Before("selectGetAge()")
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }  
}

निम्नलिखित की सामग्री है Student.java फ़ाइल।

package com.tutorialspoint;

public class Student {
   private Integer age;
  
   public void setAge(Integer age) {
      this.age = age;
   }
   
   public Integer getAge() {
      System.out.println("Age : " + age );
      return age;
   }   
}

निम्नलिखित की सामग्री है MainApp.java फ़ाइल।

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.aop.aspectj.annotation.AspectJProxyFactory;

public class MainApp {
   public static void main(String[] args) {
      ApplicationContext context = 
         new ClassPathXmlApplicationContext("Beans.xml");

      Student student = (Student) context.getBean("student");

      //Create the Proxy Factory
      AspectJProxyFactory proxyFactory = new AspectJProxyFactory(student);

      //Add Aspect class to the factory
      proxyFactory.addAspect(Logging.class);

      //Get the proxy object
      Student proxyStudent = proxyFactory.getProxy();

      //Invoke the proxied method.
      proxyStudent.getAge();
 
   }
}

निम्नलिखित विन्यास फाइल है 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 ">

   <!-- Definition for student bean -->
   <bean id = "student" class = "com.tutorialspoint.Student">
      <property name = "age"  value = "11"/>      
   </bean>

   <!-- Definition for logging aspect -->
   <bean id = "logging" class = "com.tutorialspoint.Logging"/> 
      
</beans>

प्रोजेक्ट चलाएं

एक बार जब आप स्रोत और कॉन्फ़िगरेशन फ़ाइलों का निर्माण कर लेते हैं, तो अपना एप्लिकेशन चलाएं। अपने आवेदन और उपयोग में MainApp.java पर राइट क्लिक करेंrun as Java Applicationआदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Age : 11

प्वाइंटकुट भावों के अनुसार, यह मामला हो सकता है कि वे कुछ अन्य बीन्स के लिए लागू हो जाएं, जिसके लिए सलाह का इरादा नहीं है। उदाहरण के लिए, निम्नलिखित अभिव्यक्ति पर विचार करें।

execution(* com.tutorialspoint.*.getAge(..))

एक नया स्प्रिंग बीन getAge () विधि के साथ जोड़ा जाता है और सलाह इस पर लागू होने लगेगी, हालाँकि यह अभीष्ट नहीं हो सकता है। इसे प्राप्त करने के लिए, हम एक कस्टम एनोटेशन बना सकते हैं और उन तरीकों की व्याख्या कर सकते हैं जिन पर सलाह लागू की जानी है।

@Before("@annotation(com.tutorialspoint.Loggable)")

@Before सलाह से संबंधित उपर्युक्त अवधारणाओं को समझने के लिए, हम एक उदाहरण लिखते हैं जो @Before सलाह को लागू करेगा। कुछ उदाहरणों के साथ हमारे उदाहरण को लिखने के लिए, हमारे पास एक काम करने वाली ग्रहण आईडीई है और एक स्प्रिंग एप्लिकेशन बनाने के लिए निम्न चरणों का उपयोग करें।

कदम विवरण
1 अध्याय स्प्रिंग एओपी - एप्लिकेशन के तहत बनाई गई परियोजना छात्र को अपडेट करें ।
2 सेम कॉन्फ़िगरेशन को अपडेट करें और नीचे बताए अनुसार एप्लिकेशन को चलाएं।

निम्नलिखित की सामग्री है Logging.javaफ़ाइल। यह वास्तव में पहलू मॉड्यूल का एक नमूना है, जो विभिन्न बिंदुओं पर बुलाए जाने वाले तरीकों को परिभाषित करता है।

package com.tutorialspoint;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

@Aspect
public class Logging {

   /** 
    * This is the method which I would like to execute
    * before a selected method execution.
    */
   @Before("@annotation(com.tutorialspoint.Loggable)")
   public void beforeAdvice(){
      System.out.println("Going to setup student profile.");
   }  
}

निम्नलिखित की सामग्री है Loggable.java फ़ाइल -

package com.tutorialspoint;

public @interface Loggable {

}

निम्नलिखित की सामग्री है 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;
   }
   
   @Loggable
   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.getName();
      student.getAge();     
   }
}

निम्नलिखित विन्यास फाइल है 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:aspectj-autoproxy/>

   <!-- 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आदेश। यदि आपके आवेदन में सब कुछ ठीक है, तो यह निम्नलिखित संदेश को प्रिंट करेगा।

Going to setup student profile.
Name : Zara
Age : 11