Practice
1. What is the main purpose of using AOP (Aspect-Oriented Programming) for logging in Spring Boot?
easy
Solution
Step 1: Understand AOP's role in logging
AOP allows adding extra behavior like logging without modifying the main code logic.Step 2: Identify the benefit of separation
By using AOP, logging code is kept separate, making the main code cleaner and easier to maintain.Final Answer:
To add logging without changing the main business code -> Option CQuick Check:
AOP adds logging cleanly = A [OK]
Hint: AOP separates logging from business code [OK]
Common Mistakes:
- Thinking AOP replaces logging frameworks
- Believing logging must be written inside each method
- Assuming AOP disables logging automatically
2. Which annotation is used in Spring AOP to execute code before a method runs for logging purposes?
easy
Solution
Step 1: Recall Spring AOP annotations
@Before runs advice before the target method executes, perfect for logging method start.Step 2: Differentiate from other annotations
@AfterReturning runs after method success, @Around wraps method, @AfterThrowing runs on exceptions.Final Answer:
@Before -> Option DQuick Check:
Log before method = @Before [OK]
Hint: Use @Before to log method start [OK]
Common Mistakes:
- Confusing @Before with @AfterReturning
- Using @AfterThrowing for normal logging
- Thinking @Around is only for exceptions
3. Given this Spring AOP advice snippet, what will be logged when
processOrder() method completes successfully?@Before("execution(* com.example.service.*.*(..))")
public void logStart() {
System.out.println("Method started");
}
@AfterReturning("execution(* com.example.service.*.*(..))")
public void logEnd() {
System.out.println("Method completed");
}medium
Solution
Step 1: Analyze @Before advice
BeforeprocessOrder()runs, "Method started" is printed.Step 2: Analyze @AfterReturning advice
After successful completion, "Method completed" is printed.Final Answer:
Method started and Method completed -> Option AQuick Check:
Before + AfterReturning logs both messages [OK]
Hint: Both @Before and @AfterReturning run on success [OK]
Common Mistakes:
- Thinking only one advice runs
- Confusing @AfterReturning with @AfterThrowing
- Assuming no logs if method returns void
4. Identify the error in this Spring AOP logging advice code:
@Before("execution(* com.example..*(..))")
public void logStart() {
System.out.println("Starting method");
}
@AfterReturning("execution(* com.example.service.*.*(..))")
public void logEnd() {
System.out.println("Method ended");
}medium
Solution
Step 1: Check pointcut expressions
@Before targets "com.example..*" (all subpackages), @AfterReturning targets only "com.example.service.*".Step 2: Understand mismatch impact
This mismatch means @Before runs on more methods than @AfterReturning, causing inconsistent logging.Final Answer:
The pointcut expressions target different packages -> Option AQuick Check:
Pointcut mismatch = A [OK]
Hint: Match pointcut packages exactly for consistent logging [OK]
Common Mistakes:
- Assuming pointcut syntax is wrong
- Thinking return type is required in advice methods
- Believing @AfterReturning must have returning attribute always
5. You want to log method entry, exit, and exceptions for all service methods in package
com.example.service. Which combination of Spring AOP advice annotations should you use?hard
Solution
Step 1: Identify logging needs
Entry logging requires @Before, exit logging requires @AfterReturning, exception logging requires @AfterThrowing.Step 2: Confirm combined advice usage
Using all three annotations covers all cases: start, successful end, and exceptions.Final Answer:
@Before, @AfterReturning, and @AfterThrowing -> Option BQuick Check:
All logging cases need these three advices [OK]
Hint: Use all three advices for full logging coverage [OK]
Common Mistakes:
- Using only @Before and @AfterReturning misses exceptions
- Thinking @Around alone is simpler for all cases
- Ignoring exception logging with @AfterThrowing
