0
0
SpringbootConceptBeginner · 3 min read

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

@Before advice in Spring is a type of aspect that runs custom code before a specified method executes. It allows you to add behavior like logging or security checks right before the target method runs.
⚙️

How It Works

Imagine you want to do something every time before you enter a room, like turning on the light. @Before advice works similarly in Spring. It lets you run extra code right before a specific method starts.

Spring uses Aspect-Oriented Programming (AOP) to do this. You write a piece of code called an "advice" and tell Spring which methods it should watch. When those methods are called, Spring runs your advice first, then the original method.

This helps keep your main code clean and focused, while common tasks like logging or checking permissions happen automatically before the main action.

💻

Example

This example shows a @Before advice that prints a message before any method in the MyService class runs.

java
package com.example.aspect;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* com.example.service.MyService.*(..))")
    public void beforeMethod() {
        System.out.println("[Before Advice] Method is about to run");
    }
}

// Sample service class
package com.example.service;

import org.springframework.stereotype.Service;

@Service
public class MyService {
    public void performTask() {
        System.out.println("Performing task...");
    }
}
Output
[Before Advice] Method is about to run Performing task...
🎯

When to Use

Use @Before advice when you want to run code right before certain methods without changing those methods directly. Common uses include:

  • Logging method calls for debugging or auditing
  • Checking user permissions before executing sensitive actions
  • Validating input or state before proceeding
  • Starting timers or metrics collection

This keeps your main business logic clean and separates concerns effectively.

Key Points

  • @Before advice runs before the target method executes.
  • It is part of Spring AOP and uses pointcut expressions to select methods.
  • Helps add cross-cutting concerns like logging or security checks.
  • Does not change the target method’s code directly.
  • Requires enabling Spring AOP support in your configuration.

Key Takeaways

@Before advice runs custom code before specified methods in Spring.
It helps separate common tasks like logging or security from business logic.
You define @Before advice using AspectJ pointcut expressions.
Spring AOP automatically applies the advice without modifying original methods.
Use it to keep your code clean and maintainable by handling cross-cutting concerns.