Bird
Raised Fist0
Spring Bootframework~5 mins

@After and @AfterReturning in Spring Boot - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the @After annotation do in Spring AOP?
The @After annotation runs advice after a method finishes, no matter if it returns normally or throws an exception.
Click to reveal answer
beginner
How is @AfterReturning different from @After in Spring AOP?
@AfterReturning runs advice only after a method completes successfully (returns without exception). It can access the returned value.
Click to reveal answer
intermediate
Show a simple example of @AfterReturning advice that logs the returned value.
@AfterReturning(pointcut = "execution(* com.example.service.*.*(..))", returning = "result") public void logReturnValue(Object result) { System.out.println("Returned: " + result); }
Click to reveal answer
intermediate
When would you use @After instead of @AfterReturning?
Use @After when you want to run code after a method finishes regardless of success or failure, like cleaning up resources.
Click to reveal answer
advanced
Can @AfterReturning advice modify the returned value before it reaches the caller?
No, @AfterReturning can read the returned value but cannot change it. To modify return values, use @Around advice.
Click to reveal answer
What happens if a method throws an exception? Which advice runs?
A@After advice runs, but @AfterReturning does not.
BBoth @After and @AfterReturning run.
COnly @AfterReturning runs.
DNeither advice runs.
Which annotation lets you access the method's return value?
A@After
B@Before
C@AfterReturning
D@Around
If you want to run code after a method no matter what, which advice do you choose?
A@Around
B@AfterReturning
C@Before
D@After
Can @AfterReturning advice change the method's return value?
ANo, it can only read the value.
BOnly if combined with @Before.
COnly if the method is void.
DYes, always.
Which advice type would you use to modify the return value?
A@After
B@Around
C@AfterReturning
D@Before
Explain the difference between @After and @AfterReturning in Spring AOP.
Think about what happens if the method throws an error.
You got /3 concepts.
    Describe a real-life scenario where you would use @After advice instead of @AfterReturning.
    Consider what happens if a method fails but you still want to do something.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main difference between @After and @AfterReturning in Spring AOP?
      easy
      A. @After runs after method completion regardless of outcome; @AfterReturning runs only after successful return.
      B. @After runs before the method; @AfterReturning runs after the method.
      C. @After runs only if the method throws an exception; @AfterReturning runs always.
      D. @After and @AfterReturning are exactly the same.

      Solution

      1. Step 1: Understand @After behavior

        @After advice runs after a method finishes, whether it returns normally or throws an exception.
      2. Step 2: Understand @AfterReturning behavior

        @AfterReturning advice runs only if the method completes successfully without throwing exceptions.
      3. Final Answer:

        @After runs after method completion regardless of outcome; @AfterReturning runs only after successful return. -> Option A
      4. Quick Check:

        @After = always after, @AfterReturning = after success [OK]
      Hint: Remember: @After always runs, @AfterReturning only on success [OK]
      Common Mistakes:
      • Confusing @After with @Before advice
      • Thinking @AfterReturning runs on exceptions
      • Believing both advices behave identically
      2. Which of the following is the correct syntax to define an @AfterReturning advice method in Spring AOP?
      easy
      A. @AfterReturning(pointcut = "execution(* com.example.*.*(..))", returning = "result") public void afterReturn(Object result) { }
      B. @AfterReturning("execution(* com.example.*.*(..))") public void afterReturn() { }
      C. @AfterReturning(returning = "result") public void afterReturn(Object result) { }
      D. @AfterReturning(pointcut = "execution(* com.example.*.*(..))") public void afterReturn(Object result) { }

      Solution

      1. Step 1: Check required attributes for @AfterReturning

        The @AfterReturning annotation requires a pointcut expression and optionally a returning attribute to capture the returned value.
      2. Step 2: Match method signature with returning attribute

        The method must have a parameter matching the name in returning to receive the returned value.
      3. Final Answer:

        @AfterReturning(pointcut = "execution(* com.example.*.*(..))", returning = "result") public void afterReturn(Object result) { } -> Option A
      4. Quick Check:

        Use both pointcut and returning with matching parameter [OK]
      Hint: Use both pointcut and returning with matching method parameter [OK]
      Common Mistakes:
      • Omitting pointcut attribute
      • Not matching returning name with method parameter
      • Using @AfterReturning without parameters
      3. Given the following Spring AOP advice, what will be printed if someMethod() throws an exception?
      @After("execution(* com.example.Service.someMethod(..))")
      public void afterAdvice() {
          System.out.println("After advice executed");
      }
      
      @AfterReturning(pointcut = "execution(* com.example.Service.someMethod(..))", returning = "result")
      public void afterReturningAdvice(Object result) {
          System.out.println("AfterReturning advice executed with: " + result);
      }
      medium
      A. No advice executed
      B. AfterReturning advice executed with: null
      C. Both advices executed
      D. After advice executed

      Solution

      1. Step 1: Analyze @After advice behavior on exception

        @After advice runs after method finishes regardless of success or exception, so it will execute and print its message.
      2. Step 2: Analyze @AfterReturning advice behavior on exception

        @AfterReturning advice runs only if the method returns successfully, so it will NOT run if an exception is thrown.
      3. Final Answer:

        After advice executed -> Option D
      4. Quick Check:

        @After runs always, @AfterReturning skips on exceptions [OK]
      Hint: @After runs always; @AfterReturning skips exceptions [OK]
      Common Mistakes:
      • Assuming @AfterReturning runs on exceptions
      • Thinking both advices run always
      • Confusing advice execution order
      4. Identify the error in the following advice method:
      @AfterReturning(pointcut = "execution(* com.example.Service.process(..))", returning = "retVal")
      public void afterReturn() {
          System.out.println("Returned value: " + retVal);
      }
      medium
      A. The method should be annotated with @After instead of @AfterReturning.
      B. The pointcut expression is invalid.
      C. The advice method must have a parameter named retVal to receive the returned value.
      D. The method must return a value.

      Solution

      1. Step 1: Check method parameters for returning attribute

        The returning = "retVal" attribute requires the advice method to have a parameter named retVal to receive the returned value.
      2. Step 2: Verify method signature

        The method currently has no parameters, so it cannot access retVal, causing a compile error.
      3. Final Answer:

        The advice method must have a parameter named retVal to receive the returned value. -> Option C
      4. Quick Check:

        Returning attribute needs matching method parameter [OK]
      Hint: Match returning name with method parameter to avoid errors [OK]
      Common Mistakes:
      • Omitting method parameter for returning value
      • Misnaming the parameter
      • Using @AfterReturning without pointcut
      5. You want to log the returned value of a service method only when it completes successfully, and also log a message after the method finishes regardless of outcome. Which advice combination should you use?
      hard
      A. Use two @AfterReturning advices for both logs.
      B. Use @AfterReturning to log the returned value and @After to log after method completion.
      C. Use @After advice only for both logs.
      D. Use @Before advice to log returned value and @AfterReturning to log after completion.

      Solution

      1. Step 1: Log returned value only on success

        @AfterReturning advice runs only after successful method return, so it is suitable to log the returned value.
      2. Step 2: Log after method finishes regardless of outcome

        @After advice runs after method completion whether success or exception, so it is suitable to log a message always.
      3. Final Answer:

        Use @AfterReturning to log the returned value and @After to log after method completion. -> Option B
      4. Quick Check:

        AfterReturning = success only, After = always after [OK]
      Hint: Combine @AfterReturning for success and @After for always [OK]
      Common Mistakes:
      • Using @After for returned value logging
      • Using @Before to log returned value
      • Expecting @AfterReturning to run on exceptions
      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