- Spring AOP - Discussion
- Spring AOP - Useful Resources
- Spring AOP - Quick Guide
- Spring AOP - Custom Annotation
- Spring AOP - Proxy
- Spring AOP - Around Advice
- Spring AOP - After Throwing Advice
- Spring AOP - After Returning Advice
- Spring AOP - After Advice
- Spring AOP - Before Aspect
- Spring AOP - Pointcut Methods
- Spring AOP - Application
- Spring AOP - Around Advice
- Spring AOP - After Throwing Advice
- Spring AOP - After Returning Advice
- Spring AOP - After Advice
- Spring AOP - Before Advice
- Spring AOP - Pointcut Methods
- Spring AOP - Application
- Spring AOP - Implementations
- Spring AOP - Advice Types
- Spring AOP - Core Concepts
- Spring AOP - Environment Setup
- Spring AOP - Overview
- Spring AOP - Home
Selected Reading
- Who is Who
- Computer Glossary
- HR Interview Questions
- Effective Resume Writing
- Questions and Answers
- UPSC IAS Exams Notes
Spring AOP - XML Based Apppcation
In this chapter, we will write actual AOP apppcations using Spring AOP Framework. Before you start writing your first example using Spring-WS framework, you have to make sure that you have set up your Spring AOP environment properly as explained in
chapter.Now, proceed to write a simple console-ased Spring AOP Apppcation, which will demonstrate AOP concepts.
Create a Project
Step 1 − Open a command console, go the C:MVN directory and execute the following mvn command.
C:MVN>mvn archetype:generate -DgroupId=com.tutorialspoint -DartifactId=Student -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Maven will start processing and will create the complete Java apppcation project structure.
[INFO] Scanning for projects... [INFO] [INFO] ------------------< org.apache.maven:standalone-pom >------------------- [INFO] Building Maven Stub Project (No POM) 1 [INFO] --------------------------------[ pom ]--------------------------------- [INFO] [INFO] >>> maven-archetype-plugin:3.2.0:generate (default-cp) > generate-sources @ standalone-pom >>> [INFO] [INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cp) < generate-sources @ standalone-pom <<< [INFO] [INFO] [INFO] --- maven-archetype-plugin:3.2.0:generate (default-cp) @ standalone-pom --- [INFO] Generating project in Batch mode [INFO] ---------------------------------------------------------------------------- [INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0 [INFO] ---------------------------------------------------------------------------- [INFO] Parameter: basedir, Value: C:MVN [INFO] Parameter: package, Value: com.tutorialspoint [INFO] Parameter: groupId, Value: com.tutorialspoint [INFO] Parameter: artifactId, Value: Student [INFO] Parameter: packageName, Value: com.tutorialspoint [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] project created from Old (1.x) Archetype in dir: C:MVNStudent [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 13.388 s [INFO] Finished at: 2021-12-27T20:18:26+05:30 [INFO] ------------------------------------------------------------------------
Step 2 − Go to C:/MVN directory. You ll see a Java apppcation project created, named student (as specified in artifactId). Update the POM.xml to include Spring-AOP dependencies. Add MainApp.java, Student.java, and Logging.java files.
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> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.3.14</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.14</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.7</version> </dependency> </dependencies> </project>
Following is the content of the Logging.java file.
package com.tutorialspoint; pubpc class Logging { /** * This is the method which I would pke to execute * before a selected method execution. */ pubpc void beforeAdvice() { System.out.println("Going to setup student profile."); } /** * This is the method which I would pke to execute * after a selected method execution. */ pubpc void afterAdvice() { System.out.println("Student profile has been setup."); } /** * This is the method which I would pke to execute * when any method returns. */ pubpc void afterReturningAdvice(Object retVal){ System.out.println("Returning:" + retVal.toString() ); } /** * This is the method which I would pke to execute * if there is an exception raised. */ pubpc void AfterThrowingAdvice(IllegalArgumentException ex) { System.out.println("There has been an exception: " + ex.toString()); } }
Following is the content of the Student.java file.
package com.tutorialspoint; pubpc class Student { private Integer age; private String name; pubpc void setAge(Integer age) { this.age = age; } pubpc Integer getAge() { System.out.println("Age : " + age ); return age; } pubpc void setName(String name) { this.name = name; } pubpc String getName() { System.out.println("Name : " + name ); return name; } pubpc void printThrowException(){ System.out.println("Exception raised"); throw new IllegalArgumentException(); } }
Following is the content of the MainApp.java file.
package com.tutorialspoint; import org.springframework.context.ApppcationContext; import org.springframework.context.support.ClassPathXmlApppcationContext; pubpc class MainApp { pubpc static void main(String[] args) { ApppcationContext context = new ClassPathXmlApppcationContext("Beans.xml"); Student student = (Student) context.getBean("student"); student.getName(); student.getAge(); student.printThrowException(); } }
Step 3 − Add the configuration file Beans.xml under src > main > resources folder.
<?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 − Open the command console, go the C:MVN directory and execute the following mvn command.
C:MVN>Student> mvn package
Maven will start processing and downloading the required pbraries.
C:MVNStudent>mvn package [INFO] Scanning for projects... [INFO] [INFO] ---------------------< com.tutorialspoint:Student >--------------------- [INFO] Building Student 1.0-SNAPSHOT [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Student --- [INFO] Using UTF-8 encoding to copy filtered resources. [INFO] Copying 1 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ Student --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ Student --- [INFO] Using UTF-8 encoding to copy filtered resources. [INFO] skip non existing resourceDirectory C:MVNStudentsrc est esources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ Student --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ Student --- [INFO] Surefire report directory: C:MVNStudent argetsurefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.tutorialspoint.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.093 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ Student --- [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.213 s [INFO] Finished at: 2021-12-27T20:42:00+05:30 [INFO] ------------------------------------------------------------------------ C:MVNStudent>
Import Project in Ecppse
Step 1 − Open Ecppse.
Step 2 − Select File → Import → option.
Step 3 − Select Maven Projects Option. Cpck the Next Button.
Step 4 − Select Project location, where Student project was created using Maven.
Step 5 − Cpck Finish Button.
Run Project
Once you are done creating the source and configuration files, run your apppcation. Rightcpck on MainApp.java in your apppcation and use run as Java Apppcation command. If everything is fine with your apppcation, it will print the following message.
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) ...Advertisements