WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Spring Framework · Expert · question 64 of 100

How can you implement custom AOP advice types in Spring?

📕 Buy this interview preparation book: 100 Spring Framework questions & answers — PDF + EPUB for $5

In Spring, AOP (Aspect-Oriented Programming) is implemented using advice, joinpoints, and pointcuts. Spring allows for creating custom AOP advice types to extend its existing capabilities of providing Before, After and Around advice to the application.

To implement custom AOP advice types in Spring, you can follow the following approach:

1. Create a class that implements the interface ’org.springframework.aop.Advice’, which is the base interface for all types of advice in Spring AOP.

2. Implement the required behavior based on the specific use case of the custom advice type. For example, if you want to implement a custom logging advice, you might override the ’org.springframework.aop.MethodBeforeAdvice’ interface to log the method entry before the advised method is called.

3. Annotate the custom advice type class with ’@Aspect’ annotation to indicate that this class is an AOP aspect. This will allow Spring to recognize the custom advice type as an AOP aspect.

4. Define a pointcut that specifies the joinpoints where the custom advice should be applied. You can define the pointcut using the ’@Pointcut’ annotation on a method that returns a ’org.aspectj.lang.annotation.Pointcut’ object.

5. Finally, declare the custom advice type as a bean in the Spring application context so that Spring can manage its lifecycle.

Here is an example of a custom AOP advice that logs the method execution time:

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.aop.MethodBeforeAdvice;

@Aspect
public class ExecutionTimeAdvice implements MethodBeforeAdvice {

    @Before("execution(* com.example.service.*.*(..))")
    public void before(JoinPoint joinPoint) throws Throwable {
        long startTime = System.currentTimeMillis();
        // Proceed with the advised method
        joinPoint.proceed();
        long endTime = System.currentTimeMillis();
        System.out.println("Execution time of " + joinPoint.getSignature().getName() + " method: "
                + (endTime - startTime) + "ms");
    }
}

In this example, we use the ’@Aspect’ annotation to declare the class as an AOP aspect. We then override the ’before’ method of the ’MethodBeforeAdvice’ interface to log the method execution time. The ’execution’ expression in the ’@Before’ annotation specifies the pointcut where this advice should be applied.

Once you have defined the custom AOP advice, you can declare it as a bean in the Spring application context, as shown below:

<bean id="executionTimeAdvice" class="com.example.aop.ExecutionTimeAdvice"/>

By declaring the bean in the application context, you make it available for Spring to use for advice on appropriate pointcuts.

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Spring Framework interview — then scores it.
📞 Practice Spring Framework — free 15 min
📕 Buy this interview preparation book: 100 Spring Framework questions & answers — PDF + EPUB for $5

All 100 Spring Framework questions · All topics