@Around annotation ব্যবহার করে Advice তৈরি করা

Around Advice - স্প্রিং এওপি (Spring AOP) - Java Technologies

396

@Around অ্যানোটেশন স্প্রিং এওপিতে ব্যবহৃত একটি শক্তিশালী টুল যা টার্গেট মেথডের কার্য সম্পাদনের আগে ও পরে কার্যকর হয়। এটি মেথডের কার্যপ্রণালী নিয়ন্ত্রণ এবং পরিবর্তন করার ক্ষমতা প্রদান করে। সাধারণত, লগিং, এক্সিকিউশন টাইম পরিমাপ, সিকিউরিটি চেক ইত্যাদির জন্য ব্যবহৃত হয়।


@Around অ্যানোটেশন ব্যবহার করে Advice তৈরি করার ধাপ

Step 1: Maven ডিপেনডেন্সি

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

Step 2: টার্গেট ক্লাস তৈরি

public class EmployeeService {

    public void addEmployee(String name) {
        System.out.println("Adding employee: " + name);
    }

    public void removeEmployee(String name) {
        System.out.println("Removing employee: " + name);
    }
}

Step 3: Aspect তৈরি

@Around অ্যানোটেশন ব্যবহার করে লগিং Advice:

@Aspect
@Component
public class LoggingAspect {

    @Around("execution(* EmployeeService.*(..))")
    public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("Before method: " + joinPoint.getSignature().getName());

        long startTime = System.currentTimeMillis();
        Object result;
        try {
            result = joinPoint.proceed(); // মেথড এক্সিকিউট করে
        } catch (Exception e) {
            System.out.println("Exception in method: " + joinPoint.getSignature().getName());
            throw e;
        }

        long endTime = System.currentTimeMillis();
        System.out.println("After method: " + joinPoint.getSignature().getName());
        System.out.println("Execution time: " + (endTime - startTime) + " ms");

        return result;
    }
}

Step 4: কনফিগারেশন

Annotation-Based Configuration

@Configuration
@EnableAspectJAutoProxy
@ComponentScan(basePackages = "com.example")
public class AppConfig {
}

Step 5: মেইন ক্লাস

public class AopDemoApplication {

    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);

        EmployeeService employeeService = context.getBean(EmployeeService.class);

        employeeService.addEmployee("John Doe");
        employeeService.removeEmployee("Jane Doe");

        context.close();
    }
}

আউটপুট

Before method: addEmployee
Adding employee: John Doe
After method: addEmployee
Execution time: 10 ms
Before method: removeEmployee
Removing employee: Jane Doe
After method: removeEmployee
Execution time: 5 ms

ব্যাখ্যা

  • ProceedingJoinPoint: এটি @Around অ্যানোটেশনের জন্য ব্যবহার করা হয়, যা টার্গেট মেথডে প্রবেশ এবং প্রস্থান করার সুযোগ দেয়।
  • joinPoint.proceed(): এটি টার্গেট মেথড এক্সিকিউট করে।
  • Execution Time Calculation: মেথডের কার্য সম্পাদনের সময় মাপা যায়।

উপসংহার

@Around অ্যানোটেশন ব্যবহারের মাধ্যমে টার্গেট মেথডের কার্যপ্রণালী নিয়ন্ত্রণ এবং এক্সিকিউশন টাইম পরিমাপ করা যায়। এটি স্প্রিং এওপিতে ক্রস-কাটিং কনসার্ন মডুলারাইজ করার একটি চমৎকার উপায়।


Content added By
Promotion

Are you sure to start over?

Loading...