Spring AOP around advice using annotation Example

By | June 25, 2021

In this post, We will learn about the Spring AOP around advice using annotation Example using a Demo Project.

One of the very important key units of Spring Framework is the Aspect-oriented programming (AOP) framework. Aspect-Oriented Programming helps us to provide functionalities to break down program logic into distinct parts or modules is called AOP concerns. The functions that spread across multiple sections of an application are called cross-cutting concerns and these cross-cutting concerns functionalities must be separate from the application’s business logic. There are various good examples of aspects like logging, authentication, transaction management, auditing, spring-security, caching, etc.

The key concept of modularity is Object-Oriented Programming is the class, whereas in AOP the unit of modularity is the aspect. Spring dependency Injection usually helps us to lose coupling our application objects from each other and AOP helps us to decouple cross-cutting concerns from the objects that they affect. 

Spring AOP provides interceptors to intercept an application. For example, when a method is executed, We can add extra functionality before or after the method execution.

Types of Advice

Spring AOP has five kinds of advice mentioned as Below −

SR.NO ADVICE & DESCRIPTION
1 before

This advice executes before a join point, but this advice does not have the ability to prevent execution flow to proceed to the join point (unless it throws an exception).

2 after

This advice is executed after a join point completes normally: for example if a method returns without throwing an exception.

3 after-returning

This advice runs after the method execution only if the method completes successfully.

4 after-throwing

This advice is executed if a method exiting by throwing an exception.

5 around

This is the most powerful kind of advice We can use around advice to perform custom behavior before and after the method invocation. This advice is also responsible to select whether to proceed to the joinpoint or to perform the advised method execution by returning its own return value or throwing an exception.

In this demo project, We will learn about Around Advice using annotations:

pom.xml

We need to add spring and spring-aspects dependencies in Maven pom.xml file

Account.java

The model class which hold Account information data

AccountService.java

AccountService interface

AccountServiceImpl.java

AccountService interface implementation class

AccountNotFoundException.java

Custom Exception is designed to throw when Account details not found in the repository

AccountServiceAspect.java

In this java class, we have defined a method aroundAdvice which accepts ProceedingJoinPoint as a method argument and annotated with @Around annotation to mark it as Around Advice.

The Aspects classes are usually Similar to other normal Spring bean and may have methods and fields just like any other class except that they will be annotated with @Aspect.

we have defined a method selectAll () for pointcut that will match the execution of updateAccountBalance(Account account,Long amount) method available in the AccountServiceImpl class under the package com.kkhindigyan.org.service.impl

We can declare either of the five advices using @{AdviceName} annotations as defined in the code below.

MyConfig.java

This is the Spring Java-based Config file(replacement of applicationContext.xml file). Here We have used @EnableAspectJAutoProxy annotation to enable @AspectJ support in Spring AOP.

ClientTest.java

This ClientTest class gets the AccountService bean from the applicationContext.xml file and calls the updateAccountBalance method of the EmployeeService after that around advice will be called automatically. 

If you run ClientTest.java as Java Application then it will give the below output: 

That’s all about Spring AOP around advice using annotation Example

You May Also Like:

Spring Dependency Injection with Factory Method
Spring Framework @Qualifier example
Injecting Collections in Spring Framework Example
Spring Bean Definition Inheritance Example
Spring bean scopes with example
Spring JSR-250 Annotations with Example
Spring BeanPostProcessor Example
Spring JDBC Integration Example
Spring JDBC Annotation Example
Spring with Jdbc java based configuration example
Spring JDBC NamedParameterJdbcTemplate Example
How to call stored procedures in the Spring Framework?
Spring 5 and Hibernate 5 integration CRUD Example
Spring HibernateTempate Example
Spring and Hibernate Declarative Transaction Management Example
Spring AOP Concepts and Terminology
Spring AOP Before and After Advice Example
Spring AOP Before and After Advice Using Annotations Example
Spring AOP AfterReturning and AfterThrowing Advice Example

If you have any feedback or suggestion please feel free to drop in below comment box.

Leave a Reply

Your email address will not be published.