Aspect Oriented Programming with AspectJ and Spring AOP – A simple example to create logging aspect
Here’s the source code for this example: Download
Calculator.java
package singz.spring.aop.aopdemo;
public interface Calculator {
public int sum (int a, int b);
public int difference (int a, int b);
}
CalculatorImpl.java
package singz.spring.aop.aopdemo;
public class CalculatorImpl implements Calculator {
public int sum(int a, int b) {
System.out.println("sum() invoked - params: " + a + "," + b);
return (a+b);
}
public int difference(int a, int b) {
System.out.println("difference() invoked - params: " + a + "," + b);
return Math.abs(a-b);
}
}
LoggingAspect.java
package singz.spring.aop.aopdemo;
import org.aspectj.lang.ProceedingJoinPoint;
public class LoggingAspect {
public Object log(ProceedingJoinPoint call) throws Throwable {
System.out.println("Intercepting call to '" + call.getSignature().getName() + "' method in " + call.getTarget().getClass());
System.out.println("Proceeding with the '" + call.getSignature().getName() + "' method invocation");
Object point = call.proceed();
System.out.println("Done with intercepting call to '" + call.getSignature().getName() + "' method in " + call.getTarget().getClass());
return point;
}
}
AOPMain.java
package singz.spring.aop.aopdemo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AOPMain {
public static void main(String[] args) {
ApplicationContext appContext = new ClassPathXmlApplicationContext("spring-appcontext.xml");
Calculator calculator = (Calculator) appContext.getBean("calculator");
System.out.println("5 + 4 = " + calculator.sum(5, 4));
System.out.println("5 ~ 4 = " + calculator.difference(5, 4));
}
}
spring-appcontext.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-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="calculator" class="singz.spring.aop.aopdemo.CalculatorImpl" /> <bean id="loggingAspect" class="singz.spring.aop.aopdemo.LoggingAspect" /> <aop:config> <aop:aspect ref="loggingAspect"> <aop:pointcut id="loggingPointCut" expression="execution(* singz.spring.aop.aopdemo.Calculator.*(..))" /> <aop:around pointcut-ref="loggingPointCut" method="log" /> </aop:aspect> </aop:config> </beans>
Related articles
- Using Spring’s PropertyPlaceholderConfigurer to load configurable parameters from properties files – An example (singztechmusings.wordpress.com)
- Apache CXF-based Web Services: How to log/print the payload XML of incoming SOAP request using InInterceptor? (singztechmusings.wordpress.com)
About this entry
You’re currently reading “Aspect Oriented Programming with AspectJ and Spring AOP – A simple example to create logging aspect,” an entry on Singaram's Tech Musings
- Published:
- September 4, 2011 / 12:46 PM
- Category:
- AOP, Java Frameworks, Spring

2 Comments
Jump to comment form | comment rss [?] | trackback uri [?]