سؤال

أنا أستخدم Proguard لإلغاء مكتبة تحتوي على العديد من الحقول @Autowired. يقوم Obfuscator بإعادة تسمية تلك الحقول الطبقية (لأنها خاصة/داخلية للصف) وبالتالي فشلت الفاصولي في إنشاء مثيل لها.

مسبقًا:

@Service
public class LicenseServiceImpl implements LicenseService {

    @Autowired(required = false)
    LicenseSessionStore licenseSessionStore;

    @Autowired(required = false)
    LicenseStore licenseStore;

...
}

ما بعد التوسع:

@Service
public class LicenseServiceImpl implements LicenseService {

  @Autowired(required=false)
  LicenseSessionStore a;

  @Autowired(required=false)
  LicenseStore b;

...
}

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

أي شخص لديه فكرة عن كيف يمكنني القيام بذلك بشكل عام؟

منحة

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

المحلول 2

لا أعتبر هذا إجابة صحيحة على سؤالي وما زلت أحب الحل الأنيق والعامة لهذه المشكلة. ما أقوم بنشره هو الحل البديل المؤقت الذي جعلني تجاوز مشكلتي بأكثر القوة الغاشمة ، غير المألوفة.

لقد استبعدت صراحة هذه العناصر من التشويش عن طريق إضافتها إلى خيار KeepClassMemberNames:

<option>-keepclassmembernames class * {com.common.license.LicenseSessionStore licenseSessionStore; com.common.license.LicenseStore licenseStore; }</option>

هذا ليس حلاً مفضلاً لأنه يتطلب استحسانًا محددًا في كل فصل وسيصبح كابوسًا للصيانة.

لا تزال هناك حاجة إلى إجابة أفضل!

منحة

نصائح أخرى

كان لدي مشكلة مماثلة في الاحتفاظ بأسماء الفصول الدراسية لفصول SimpleXML المشروحة. كان إصلاحي هو إضافة ما يلي:

-keepclassmembers class * {
    @org.simpleframework.xml.* *;
}

أعتقد أن شيئًا مشابهًا سيعمل من أجلك:

-keepclassmembers class * {
    @org.springframework.beans.factory.annotation.* *;
} 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top