What’s the difference between @Component, @Controller, @Repository & @Service annotations in Spring?
Pointcut:
Pointcut are expressions that is matched with join points to determine whether
advice needs to be executed or not. Pointcut uses different kinds of
expressions that are matched with the join points and Spring framework uses the
AspectJ pointcut expression language.
AOP
Advice Types
Before
Advice: These advices run before the execution of join point methods. Use
@Before annotation to mark an advice type as Before advice.
After
(finally) Advice: An advice that gets executed after the join point method
finishes executing, whether normally or by throwing an exception. We can create
after advice using @After annotation.
After
Returning Advice: Sometimes we want advice methods to execute only if the join
point method executes normally. We can use @AfterReturning annotation to mark a
method as after returning advice.
After
Throwing Advice: This advice gets executed only when join point method throws
exception, we can use it to rollback the transaction declaratively. We use
@AfterThrowing annotation for this type of advice.
Around Advice: This is
the most important and powerful advice. This advice surrounds the join point
method and we can also choose whether to execute the join point method or not.
We can write advice code that gets executed before and after the execution of
the join point method. It is the responsibility of around advice to invoke the
join point method and return values if the method is returning something. We
use @Around annotation to create around advice methods.