Dlaczego miałbyś kiedykolwiek tworzyć niestandardowe programy ładujące klasy? Przykład z prawdziwego świata byłby świetny!Kiedy utworzyć niestandardowe programy ładujące klasy?
Odpowiedz
Serwery aplikacyjne, takie jak serwery Java EE i kontenery OSGI, używają niestandardowego programu ładującego klasy do dynamicznego aktualizowania i usuwania oprogramowania.
Inne niestandardowe classloaders są wykorzystywane do wspierania zastrzyki kod dynamiczny (od Javy 5.0 Instrumentation jest preferowany)
Typowe przypadki to:
klas Instrument/obciążenie przy starcie.
Załaduj zaszyfrowane klasy.
Zdalne ładowanie klasy.
To nie jest coś, co można prawdopodobnie kiedykolwiek napisać samemu, ale można skorzystać z jednego w ramach niektórych złożonych struktur - na przykład wtrysk zależności często jest implementowany za pomocą ClassLoaders. Innym popularnym zastosowaniem programów ładujących klasy niestandardowej jest testowanie jednostkowe: niestandardowy program ładujący klasy może być użyty do zastąpienia klas ładowanych przez testowaną jednostkę wersjami "fałszywymi", które reagują w kontrolowany sposób (na przykład, aby symulować błędy, które w przeciwnym razie byłyby trudne do utworzenia).
Szczerze mówiąc, trudno wyobrazić sobie ekosystem Java bez niestandardowych programów ładujących klasy. Wiele luźno powiązanych architektur opiera się na modułach ładujących klasy. Proponuję spędzić kilka godzin z JSPF (Java Simple Plugin Framework), ponieważ tylko niektóre praktyczne doświadczenia będą dla ciebie naprawdę cenne. JSPF jest dość prosty i pozwala nie tylko zrozumieć potencjalne przypadki, kiedy niestandardowe programy ładujące klasy są potrzebne, ale także poczuć moc takiego rozwiązania.
próbować podążać prosty plan:
- zdefiniować interfejs (a zamówienia)
- zapewnić realizację jako samodzielny moduł/słoik
- Zastosowanie JSPF a wcześniej zdefiniowany kontrakt odkryć dostępne realizacji (s)
- Zrobić kilka przydatnych rzeczy z odkrytą implementacją
- Zrozum, że masz luźno połączony system
- Dowiedz się, jak classloaders są rzeczywiście wykorzystywane w tym przykładzie
Proszę również przejrzeć poniższe linki:
- 1. Jak utworzyć niestandardowe kółko ładujące CSS3?
- 2. Kiedy utworzyć niestandardowe centrum NSNotificationCenter?
- 3. Pakiety sieciowe różne programy ładujące dla różnych pozycji js
- 4. Dlaczego miałbym widzieć tylko "martwe" programy ładujące klasy od jmap -permstat (z wyjątkiem bootstrapu)?
- 5. ApplicationException lub utworzyć niestandardowe wyjątki?
- 6. Webpack 2: Jak zastosować różne programy ładujące do plików o tym samym rozszerzeniu?
- 7. THREE.js OBJ Obiekty ładujące
- 8. Moduły ładujące Androida dynamicznie
- 9. Kiedy i jak jest oznaczany program ładujący klasy java do zbierania śmieci?
- 10. Kiedy należy utworzyć metodę rozszerzenia?
- 11. Niestandardowe atrybuty dla członków klasy
- 12. Leniwe elementy ładujące z filtrowaniem
- 13. Twórz niestandardowe klasy dynamiczne w celu-c
- 14. Jak utworzyć kod VS i uruchamiać programy Rust?
- 15. Kiedy należy utworzyć nową gałąź?
- 16. Jak utworzyć niestandardowe okno chrome w wpf?
- 17. Jak utworzyć niestandardowe formanty w języku C#?
- 18. Jak utworzyć niestandardowe paski przewijania w IE?
- 19. Jak utworzyć niestandardowe powiadomienia w Swift 3?
- 20. Jak utworzyć niestandardowe okno dialogowe w vscode?
- 21. Jak utworzyć inne klasy z klasy singleton?
- 22. PHP Leniwe obiekty ładujące i wtrysk zależności
- 23. Kiedy należy utworzyć lub otworzyć instancję EntityManagerFactory?
- 24. Symfony2 gdzie umieścić niestandardowe klasy pomocników
- 25. Kiedy powinniśmy używać klasy, a kiedy nie powinniśmy
- 26. Jak mogę rozpowszechniać programy Pythona?
- 27. Jak utworzyć wystąpienie klasy HttpRequestHeaders
- 28. Jak AutoMapper utworzyć instancję klasy
- 29. Które klasy Metody chcesz utworzyć?
- 30. php utworzyć obiektu bez klasy
Inne niestandardowe classloaders są wykorzystywane do wspierania kod dynamiczny zastrzyki "Czy to coś w rodzaju zależnych pojemników iniekcyjnych? – Mayumi
Zmieniają kod w czasie wykonywania, nawet zmieniając klasy systemowe. –