كيفية تعديل بسرعة تجميع الطبقات جافا السلوك مع aspectJ

StackOverflow https://stackoverflow.com/questions/435348

  •  10-07-2019
  •  | 
  •  

سؤال

وكيفية استخدام aspectJ لإضافة وظائف مؤقتا لبعض التطبيقات جافا؟ شيء من هذا القبيل خلق الجانب، ترجمة مع هيئة المساءلة والعدالة، وذلك باستخدام الأوامر جافا مع بعض التبديل إضافية لتطبيق الجانب؟

هل كانت مفيدة؟

المحلول

والسؤال، أعتقد أن يمكنك تمكين / تعطيل رمز خيوطها بواسطة Aspectj أثناء وقت التشغيل.

وأنا لا أعرف إذا كان هناك المدمج في آلية AspectJ ولكن أنا متأكد من أن يمكنك لف التعليمات البرمجية في الجانب مع عبارة شرطية. ثم كل ما عليك القيام به هو في وقت تبديل هذا الرمز أو إيقاف تشغيله

وعلى سبيل المثال

// HelloWorld.java
public class HelloWorld {
    public static void say(String message) {
        System.out.println(message);
    }

    public static void sayToPerson(String message, String name) {
        System.out.println(name + ", " + message);
    }
}


// PoliteHelloWorld.java
public aspect PoliteHelloWorld {
    pointcut callSayMessage() : call(public static void HelloWorld.say*(..));
    before() : callSayMessage() {
        if( is_aspectj_turned_on_this_run() ) {
            System.out.println("Good day!");
        }
    }
    after() : callSayMessage() {
        if( is_aspectj_turned_on_this_run() ) {
            System.out.println("Thank you!");
        }
    }
}

وكيف تريد لتنفيذ "is_aspect_j_turned_on_this_run()" الأمر متروك لكم (ربما وضعتها وسائط سطر الأوامر أو إدخال المستخدم؟)

وهناك طريقة أفضل، وهو صحيحا جانبا والتي تعالج جوانب كنت ترغب في تعطيل في وقت التشغيل. وهذا الجانب الإضافي الجديد سيكون الوحيدة المسؤولة عن تدقيق الخاص "is_aspect_j_turned_on_this_run()". للاطلاع على تفاصيل هذه الطريقة أنظف ننظر هنا

وأنا لا أعرف إذا كان هناك طريقة أفضل للقيام بذلك من هاتين الطريقتين (جيد جدا يمكن أن يكون)، ولكن على الأقل هذا يسمح لك لتحويلها على نحو متقطع في وقت التشغيل عدة مرات كما يحلو لك دون اعادة تجميع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top