How to implement Before Advice using @AspectJ Annotation-Driven AOP in Java ?.

A simple application to demonstrate how to implement Before Advice using @AspectJ Annotation-Driven AOP in Java.

Step 1:- Create a Interface Subtraction.java

package com.hubberspot.aspectj.annotation.beforeadvice;
// Its a simple interface for the Subtraction service.
// It contains one single method called as subtract().
// This method takes in two arguments both of the type
// int.
public interface Subtraction {
public void subtract(int a , int b);
}

Step 2:- SubtractionImpl.java Service Implementation Class

package com.hubberspot.aspectj.annotation.beforeadvice;
// It is the implementation class for the
// Subtraction service. It just calculates and prints
// subtraction of two numbers passed to it as arguments.
// After printing subtraction on the console it just
// throws new RuntimeException().
public class SubtractionImpl implements Subtraction {
@Override
public void subtract(int a, int b) {
if(a > b) {
System.out.println((a-b));
}
else {
System.out.println((b-a));
}
}
}

package com.hubberspot.aspectj.annotation.beforeadvice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SubtractionTest {
public static void main(String[] args) {
// ApplicationContext is a Spring interface which
// provides with the configuration for an application.
// It provides us with all the methods that BeanFactory
// provides. It loads the file resources in a older
// and generic manner. It helps us to publish events to the
// listener registered to it. It also provides quick support
// for internationalization. It provides us with the object
// requested, it reads the configuration file and provides
// us with the necessary object required.
// We are using concrete implementation of AbstractApplicationContext
// here called as ClassPathXmlApplicationContext because this
// bean factory reads the xml file placed in the classpath of
// our application. We provide ClassPathXmlApplicationContext
// with a configuration file called as after_returning_advice.xml placed
// at classpath of our application.
ApplicationContext context =
new ClassPathXmlApplicationContext("before_advice.xml");
// In order to get a object instantiated for a particular bean
// we call getBean() method of ClassPathXmlApplicationContext
// passing it the id for which the object is to be needed.
// Here getBean() returns an Object. We need to cast it back
// to the Subtraction object. Without implementing new keyword we
// have injected object of Subtraction just by reading an xml
// configuration file.
Subtraction subtract = (Subtraction)context.getBean("subtract");
subtract.subtract(10, 6);
subtract.subtract(5, 10);
}
}

Output of the program :

A simple application to demonstrate how to implement Before Advice using @AspectJ Annotation-Driven AOP in Java.

Step 1:- Create a Interface Subtraction.java

package com.hubberspot.aspectj.annotation.beforeadvice;
// Its a simple interface for the Subtraction service.
// It contains one single method called as subtract().
// This method takes in two arguments both of the type
// int.
public interface Subtraction {
public void subtract(int a , int b);
}

Step 2:- SubtractionImpl.java Service Implementation Class

package com.hubberspot.aspectj.annotation.beforeadvice;
// It is the implementation class for the
// Subtraction service. It just calculates and prints
// subtraction of two numbers passed to it as arguments.
// After printing subtraction on the console it just
// throws new RuntimeException().
public class SubtractionImpl implements Subtraction {
@Override
public void subtract(int a, int b) {
if(a > b) {
System.out.println((a-b));
}
else {
System.out.println((b-a));
}
}
}

package com.hubberspot.aspectj.annotation.beforeadvice;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SubtractionTest {
public static void main(String[] args) {
// ApplicationContext is a Spring interface which
// provides with the configuration for an application.
// It provides us with all the methods that BeanFactory
// provides. It loads the file resources in a older
// and generic manner. It helps us to publish events to the
// listener registered to it. It also provides quick support
// for internationalization. It provides us with the object
// requested, it reads the configuration file and provides
// us with the necessary object required.
// We are using concrete implementation of AbstractApplicationContext
// here called as ClassPathXmlApplicationContext because this
// bean factory reads the xml file placed in the classpath of
// our application. We provide ClassPathXmlApplicationContext
// with a configuration file called as after_returning_advice.xml placed
// at classpath of our application.
ApplicationContext context =
new ClassPathXmlApplicationContext("before_advice.xml");
// In order to get a object instantiated for a particular bean
// we call getBean() method of ClassPathXmlApplicationContext
// passing it the id for which the object is to be needed.
// Here getBean() returns an Object. We need to cast it back
// to the Subtraction object. Without implementing new keyword we
// have injected object of Subtraction just by reading an xml
// configuration file.
Subtraction subtract = (Subtraction)context.getBean("subtract");
subtract.subtract(10, 6);
subtract.subtract(5, 10);
}
}