0
0
SpringbootConceptBeginner · 3 min read

@Around Advice in Spring: What It Is and How It Works

@Around advice in Spring is a type of aspect that wraps a method execution, allowing you to run code before and after the method runs. It lets you control the method call, modify inputs or outputs, and handle exceptions all in one place.
⚙️

How It Works

Imagine you want to watch a movie but also want to pause it, check your phone, and then continue watching. @Around advice works like a remote control that lets you pause before the movie starts, do something extra, and then resume or even change the movie.

In Spring, @Around advice wraps around a method call. It can run code before the method starts, decide whether to run the method at all, run code after the method finishes, and even change the method's return value or handle exceptions. This gives you full control over the method execution.

Technically, it uses a special object called ProceedingJoinPoint that represents the method call. Calling proceed() on it runs the original method. You can run code before and after this call to add extra behavior.

💻

Example

This example shows a simple @Around advice that logs messages before and after a method runs.

java
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggingAspect {

    @Around("execution(* com.example.service.*.*(..))")
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("Before method: " + joinPoint.getSignature().getName());
        Object result = joinPoint.proceed();
        System.out.println("After method: " + joinPoint.getSignature().getName());
        return result;
    }
}
Output
Before method: someMethod After method: someMethod
🎯

When to Use

Use @Around advice when you need to run code both before and after a method, or when you want to control the method execution itself. It is perfect for tasks like logging, performance measuring, transaction management, or security checks.

For example, you can measure how long a method takes by recording the time before and after it runs. Or you can check user permissions before allowing a method to proceed. This advice is very flexible and powerful for cross-cutting concerns that affect many parts of your app.

Key Points

  • @Around advice wraps method execution to run code before and after.
  • It uses ProceedingJoinPoint to control method calls.
  • You can modify inputs, outputs, or handle exceptions inside it.
  • Ideal for logging, security, transactions, and performance monitoring.
  • Gives full control over whether and how the method runs.

Key Takeaways

@Around advice lets you run code before and after a method and control its execution.
It uses ProceedingJoinPoint to proceed with or skip the original method call.
Use it for cross-cutting tasks like logging, security checks, and performance timing.
You can modify the method's return value or handle exceptions inside @Around advice.
It provides the most flexible way to add behavior around method execution in Spring AOP.