@کامپوزررودولفو کامپوس
مرد خانواده و گیک فناوری – علاقه مند به مهندسی نرم افزار و داده و کارآفرینی
اخیراً من نیاز به تغییر کلاسهای خاص – از وابستگی های خارجی – بارگذاری شده در یک برنامه Spring Boot داشتم. همه اینها در یک محیط بسیار محدود اتفاق افتاد ، جایی که من اجازه استفاده از کتابخانه های دیگر و یا تغییر سریع JRE را نداشتم ، فقط می توان متغیرهای JAR چربی و محیط یا خصوصیات سیستم را اصلاح کرد.
من با استفاده از نحوه کارکرد سیستم کلاس بارگیری جاوا ، موفق به تغییر رفتار وابستگی شدم. در مورد من ، چون کلاس بخشی از وابستگی بود و نه JRE ، من تصمیم گرفتم فقط به App Class Loader اعتماد کنم. البته ، این خاص بهار نیست ، این بیشتر “هر برنامه JVM” خاص است 🙂
توجه: برای مواردی که کلاسها بخشی از JRE هستند ، می توانید از گزینه “-Xbootclasspath / a: path” (جاوا <9) یا Jigsaw برای نسخه های اخیر استفاده کنید.
App Class Loader قبل از رفتن به بررسی وابستگی ها ، هر کلاس موجود در مسیر کلاس شما را انتخاب می کند. به همین دلیل ، اگر یک کلاس با همان نام واجد شرایط اضافه کنید – که به قرارداد اصلی احترام می گذارد – می توانید رفتار وابستگی را “هک” کنید.
برای demo کردن این روش ، من کتابخانه Jasypt را انتخاب کردم و BasicTextEncryptor را با اجرای سفارشی رمز Cesar تغییر دادم …