Spring AOP (Aspect-Oriented Programming)

sametklou

Spring AOP (Aspect-Oriented Programming)

Spring AOP, Spring Framework içerisinde bulunan bir modüldür ve genellikle çapraz kesen ilgili işlevleri ayırmak için kullanılır. Bu modül, işlemleri mantıksal birimlere ayırarak kodun daha okunabilir ve bakımı daha kolay bir hale getirilmesine olanak sağlar. Spring AOP'nin temel amacı, kodun temel işlevselliğini kirletmeden ortak konuları ele almak ve kod tekrarını azaltmaktır.

Spring AOP Terminolojisi

Spring AOP kullanırken karşınıza çıkabilecek temel terimler şunlardır:

  • Aspect: Gerçekleştirilmek istenen işlemleri temsil eden bir sınıftır.
  • Join Point: Aspect'in uygulanabileceği noktaları ifade eder. Örneğin, metod çağrıları bir join point olabilir.
  • Advice: Aspect içerisindeki join point'lerde gerçekleştirilen ilave işlemlerdir.
  • Pointcut: Belirli join point'leri seçen ifadelerdir.
  • Weaving: Aspect'in kod üzerine getirilme işlemidir.

Spring AOP ile Çalışmak

Dependency Injection Ayarları

Spring AOP kullanabilmek için spring-aspects kütüphanesini projenize dahil etmelisiniz:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>5.2.6.RELEASE</version>
</dependency>

Aspect Tanımlama

Öncelikle bir aspect sınıfı oluşturun. Bu sınıf, işlemleri gerçekleştirecek metotları içermelidir.

@Aspect
@Component
public class LoggingAspect {

    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore(JoinPoint joinPoint) {
        String methodName = joinPoint.getSignature().getName();
        System.out.println("Before method: " + methodName);
    }
}

Main Sınıfı

Aspect'leri kullanabilmek için @EnableAspectJAutoProxy annotation'ını eklemelisiniz:

@SpringBootApplication
@EnableAspectJAutoProxy
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Yukarıdaki adımları takip ederek Spring AOP'yi uygulayabilir ve çeşitli işlemleri gerçekleştirebilirsiniz. Daha fazla bilgi için Spring AOP dokümantasyonuna başvurabilirsiniz.