Bird
Raised Fist0
Spring Bootframework~5 mins

@Before advice in Spring Boot - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of the @Before advice in Spring AOP?

The @Before advice runs a method before the target method executes. It is used to perform actions like logging, security checks, or setting up resources before the main method runs.

Click to reveal answer
beginner
How do you declare a @Before advice in Spring Boot?

You create a method annotated with @Before and provide a pointcut expression that matches the methods where you want the advice to run.

@Before("execution(* com.example.service.*.*(..))")
public void beforeAdvice() {
  // code to run before target method
}
Click to reveal answer
intermediate
What is a pointcut expression in the context of @Before advice?

A pointcut expression defines which methods the advice should apply to. It uses patterns to match method names, packages, or classes.

Click to reveal answer
intermediate
Can @Before advice modify the return value of the target method?

No, @Before advice runs before the method and cannot change the return value. To modify return values, use @Around advice.

Click to reveal answer
beginner
Give a real-life example where @Before advice is useful.

Before a bank transaction method runs, @Before advice can check if the user is authenticated and log the transaction attempt.

Click to reveal answer
What does @Before advice do in Spring AOP?
AModifies the return value of the target method
BRuns code after the target method executes
CRuns code before the target method executes
DHandles exceptions thrown by the target method
Which annotation is used to declare a method as a @Before advice?
A@Before
B@After
C@Around
D@Pointcut
Can @Before advice stop the execution of the target method?
AYes, by throwing an exception
BNo, it always lets the method run
CYes, by returning false
DNo, it runs after the method
What is a pointcut expression used for in @Before advice?
ATo define when the advice runs
BTo define which methods the advice applies to
CTo modify method arguments
DTo log method return values
Which advice type allows modifying the return value of a method?
A@Before
B@AfterThrowing
C@After
D@Around
Explain how @Before advice works in Spring Boot and give an example use case.
Think about what you want to do before a method runs.
You got /3 concepts.
    Describe the difference between @Before advice and @Around advice.
    Consider when each advice runs and what it can do.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the @Before advice in Spring AOP?
      easy
      A. To replace the matched method entirely
      B. To run code right before the matched method executes
      C. To run code after the matched method completes
      D. To handle exceptions thrown by the matched method

      Solution

      1. Step 1: Understand the role of @Before advice

        @Before advice is designed to execute code just before the target method runs.
      2. Step 2: Compare with other advice types

        @After runs after method completion, @Around can replace, and @AfterThrowing handles exceptions.
      3. Final Answer:

        To run code right before the matched method executes -> Option B
      4. Quick Check:

        @Before advice = runs before method [OK]
      Hint: Remember: @Before means before method starts [OK]
      Common Mistakes:
      • Confusing @Before with @After or @Around advice
      • Thinking @Before replaces the method
      • Assuming @Before handles exceptions
      2. Which of the following is the correct syntax to define a @Before advice method in Spring AOP?
      easy
      A. @Before("execution(* com.example.service.*.*(..))") public void logBefore() {}
      B. @Before public void logBefore() { execution(* com.example.service.*.*(..)); }
      C. @Before public void logBefore() execution(* com.example.service.*.*(..)) {}
      D. @Before("logBefore()") public void execution(* com.example.service.*.*(..)) {}

      Solution

      1. Step 1: Identify correct @Before annotation usage

        The @Before annotation requires a pointcut expression as a string parameter inside parentheses and quotes.
      2. Step 2: Check method signature and placement

        The method should be public void with no parameters or with JoinPoint if needed, and the pointcut is inside @Before("...").
      3. Final Answer:

        @Before("execution(* com.example.service.*.*(..))") public void logBefore() {} -> Option A
      4. Quick Check:

        @Before("pointcut") public void method() {} [OK]
      Hint: Look for @Before with pointcut string in parentheses [OK]
      Common Mistakes:
      • Placing pointcut expression outside quotes
      • Missing parentheses after @Before
      • Incorrect method signature or missing public
      3. Given the following code snippet, what will be printed when service.process() is called?
      @Aspect
      @Component
      public class LoggingAspect {
        @Before("execution(* com.example.service.Service.process(..))")
        public void beforeProcess() {
          System.out.println("Before process");
        }
      }
      
      @Service
      public class Service {
        public void process() {
          System.out.println("Processing");
        }
      }
      medium
      A. Before process\nProcessing
      B. Processing\nBefore process
      C. Before process
      D. Processing

      Solution

      1. Step 1: Understand @Before advice execution timing

        @Before advice runs before the matched method, so "Before process" prints first.
      2. Step 2: Analyze method call output

        Then the actual method prints "Processing" after the advice.
      3. Final Answer:

        Before process\nProcessing -> Option A
      4. Quick Check:

        @Before prints first, then method output [OK]
      Hint: @Before prints before method output [OK]
      Common Mistakes:
      • Assuming method prints before advice
      • Thinking advice replaces method output
      • Ignoring advice execution order
      4. Identify the error in this @Before advice definition:
      @Before("execution(* com.example..*(..))")
      public void beforeMethod() {
        System.out.println("Before method");
      }
      medium
      A. Advice method cannot have a body
      B. Pointcut expression syntax is invalid
      C. Method must return a value
      D. Missing @Aspect annotation on the class

      Solution

      1. Step 1: Check class-level annotations

        For @Before advice to work, the class must be annotated with @Aspect to mark it as an aspect.
      2. Step 2: Validate pointcut and method

        The pointcut expression is valid, and advice methods can have bodies and return void.
      3. Final Answer:

        Missing @Aspect annotation on the class -> Option D
      4. Quick Check:

        @Aspect missing = advice won't run [OK]
      Hint: Always add @Aspect on the class with advice [OK]
      Common Mistakes:
      • Forgetting @Aspect on the aspect class
      • Assuming advice methods must return values
      • Misreading pointcut syntax errors
      5. You want to log a message before any method in com.example.repository package is called, but only for methods starting with save. Which @Before pointcut expression correctly matches this?
      hard
      A. @Before("execution(* com.example.repository.save*(..))")
      B. @Before("execution(* com.example.repository.*save*(..))")
      C. @Before("execution(* com.example.repository..save*(..))")
      D. @Before("execution(* com.example.repository.*.save*(..))")

      Solution

      1. Step 1: Understand pointcut syntax for package, class, and method

        To match methods starting with 'save' in any class of the com.example.repository package, use execution(* com.example.repository.*.save*(..)). However, if you want to include subpackages as well, use '..' instead of a single '*'.
      2. Step 2: Analyze each option

        A matches only methods named save* in the package directly (no class wildcard), B is invalid syntax, C matches methods in any class in the package but not subpackages, D matches methods starting with save in the package and all subpackages.
      3. Final Answer:

        @Before("execution(* com.example.repository..save*(..))") -> Option C
      4. Quick Check:

        package..save*(..) = matches package and subpackages [OK]
      Hint: Use package..save* to include subpackages and methods starting with save [OK]
      Common Mistakes:
      • Using incorrect wildcards or dots in method name
      • Matching subpackages unintentionally
      • Misplacing wildcards in pointcut expression
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard