Pointcut – Name Match Example

In this article, you will see how to use intercept a method by it’s method name with Spring AOP framework.

First create a new Java Project and configure it as Maven Project. For Reference, Click Here

Add the following dependencies in pom.xml

    <!-- Proxy class need this library -->

1. Business Logic and Implementation

We will first write our business logic and then we will add Spring AOP to profile our business methods.

Create an interface BusinessService and write a following method. We will intercept this via Advice


package com.kruders.spring.aop;
public interface BusinessService {
    void doSomeThing();

Now create a class BusinessImpl.java that implements the above interface.


package com.kruders.spring.aop;
import org.springframework.stereotype.Service;
public class BusinessImpl implements BusinessService {
    public void doSomeThing() {
        System.out.println("Do Something Here");

2. Configure Spring AOP

Create Spring-Business.xml and write the following code


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="businessService" class="com.kruders.spring.aop.BusinessImpl" />
    <!-- Advice -->
    <bean id="businessAdvice" class="com.kruders.spring.advice.BusinessAdvice" />
    <bean id="customerPointcut"
        <property name="mappedName" value="doSomeThing" />
    <bean id="customerAdvisor"
        <property name="pointcut" ref="customerPointcut" />
        <property name="advice" ref="businessAdvice" />
    <bean id="businessServiceProxy"
        <property name="target" ref="businessService" />
        <property name="interceptorNames">

We defined two normal Spring beans – one for our Business class and the other for Business Profiler (i.e. our advice).

We also create a new proxy object named ‘businessServiceProxy‘.

target‘ – Define which bean you want to intercept. ‘interceptorNames‘ – Define which class (advice) you want to apply on this proxy /target object.

Intercept a doSomeThing() method via ‘pointcut’ and ‘advisor’. Create a NameMatchMethodPointcut pointcut bean, and put the method name you want to intercept in the ‘mappedName‘ property value.

<bean id="businessPointcut"
    <property name="mappedName" value="doSomeThing" />

Create a DefaultPointcutAdvisor advisor bean, and associate both advice and pointcut.

<bean id="businessAdvisor"
    <property name="pointcut" ref="businessPointcut" />
    <property name="advice" ref="businessAdvice" />

Pass “businessAdvisor” as interceptorNames value.

<property name="interceptorNames">

3. Advice Class

Now write a Advice which will profile our business method.


package com.kruders.spring.advice;
import java.util.Arrays;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class BusinessAdvice implements MethodInterceptor {
    public Object invoke(MethodInvocation method) throws Throwable {
        System.out.println("Method name : " + method.getMethod().getName());
        System.out.println("Method arguments : " + Arrays.toString(method.getArguments()));
        System.out.println("Around method is called");
        System.out.println("Around before is running");
        System.out.println("Around after is running");
        return null;

4. Helper Class

Create Main.java class that loads our Business bean from Spring Context and then calling our business method.


package com.kruders.spring.core;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.kruders.spring.aop.BusinessService;
public class Main {
    public static void main(String args[]) {
        ApplicationContext appContext = new ClassPathXmlApplicationContext("Spring-Business.xml");
        BusinessService businessService = (BusinessService)appContext.getBean("businessServiceProxy");
        try {
        } catch(ArithmeticException ae) {

The folder structure of the example is shown below in Figure 15.1

Figure 15.1 Figure 15.1

You can download the source code of this example here.

No comments yet.

Leave a Reply