এটি দেরিতে হতে পারে তবে আমি এমন কিছু বিষয় পেলাম যা প্রক্সি সম্পর্কিত আপনার উদ্বেগকে ব্যাখ্যা করে (প্রক্সিটির মাধ্যমে আসা কেবল 'বাহ্যিক' পদ্ধতি কলগুলি বাধা দেওয়া হবে) ly
উদাহরণস্বরূপ, আপনার কাছে এমন একটি ক্লাস রয়েছে যা দেখতে এটির মতো দেখাচ্ছে
@Component("mySubordinate")
public class CoreBusinessSubordinate {
public void doSomethingBig() {
System.out.println("I did something small");
}
public void doSomethingSmall(int x){
System.out.println("I also do something small but with an int");
}
}
এবং আপনার একটি দিক রয়েছে যা দেখতে এটির মতো দেখাচ্ছে:
@Component
@Aspect
public class CrossCuttingConcern {
@Before("execution(* com.intertech.CoreBusinessSubordinate.*(..))")
public void doCrossCutStuff(){
System.out.println("Doing the cross cutting concern now");
}
}
আপনি যখন এটিকে এভাবে চালিত করেন:
@Service
public class CoreBusinessKickOff {
@Autowired
CoreBusinessSubordinate subordinate;
// getter/setters
public void kickOff() {
System.out.println("I do something big");
subordinate.doSomethingBig();
subordinate.doSomethingSmall(4);
}
}
উপরে প্রদত্ত কোডের উপরে কিকআফ কল করার ফলাফল।
I do something big
Doing the cross cutting concern now
I did something small
Doing the cross cutting concern now
I also do something small but with an int
তবে আপনি যখন আপনার কোডটি পরিবর্তন করেন
@Component("mySubordinate")
public class CoreBusinessSubordinate {
public void doSomethingBig() {
System.out.println("I did something small");
doSomethingSmall(4);
}
public void doSomethingSmall(int x){
System.out.println("I also do something small but with an int");
}
}
public void kickOff() {
System.out.println("I do something big");
subordinate.doSomethingBig();
//subordinate.doSomethingSmall(4);
}
আপনি দেখুন, পদ্ধতিটি অভ্যন্তরীণভাবে অন্য পদ্ধতিটিকে কল করে যাতে এটি বাধা দেওয়া হবে না এবং আউটপুটটি এর মতো দেখায়:
I do something big
Doing the cross cutting concern now
I did something small
I also do something small but with an int
আপনি এটি করে বাই-পাস করতে পারেন
public void doSomethingBig() {
System.out.println("I did something small");
//doSomethingSmall(4);
((CoreBusinessSubordinate) AopContext.currentProxy()).doSomethingSmall(4);
}
কোড স্নিপেট থেকে নেওয়া:
https://www.intertech.com/Blog/secrets-of-the-spring-aop-proxy/