2011-02-04 2 views

ответ

12

A класс loader - это объект Java, отвечающий за поиск двоичных представлений классов Java и их загрузку в JVM. Все JVM начинаются с загрузчика загрузочного класса, ответственного за загрузку начального класса пользователя, а также некоторых встроенных типов, таких как Class и SecurityManager, но пользователи могут предоставить свои собственные загрузчики классов для поиска классов из других источников. Например, пользовательский загрузчик классов может генерировать свои собственные классы, создавая собственный байт-код, или он может находить классы из сетевого источника.

Чтобы выполнить требования своего клиента, вы не должны определять свой собственный загрузчик классов и должны полагаться на загрузчик загрузочного класса, чтобы найти все ваши классы. Это почти повсеместно то, что сделано в простых программах Java, потому что варианты использования для пользовательских загрузчиков обычно довольно сложны и нюансированы. Вам не нужно беспокоиться об этом ограничении, если вы специально не хотите изменить способ обнаружения и загрузки классов JVM.

+0

Итак, если я просто придерживаюсь Spring Framework и не делаю ничего необычного, я должен быть в порядке? –

1

Пользовательские загрузчики классов обычно используются для динамического генерации кода или для улучшения существующих классов.

Например, некоторые реализации ORM (JDO) используют это для создания кода, который обрабатывает перевод объектов Java в таблицы базы данных. Другое использование - в решениях с прозрачной кластеризацией (например, Terracota), где объекты расширены, чтобы они автоматически копировали себя через кластер.

Это в основном не позволяет динамически генерировать и вводить код в существующее приложение.

0

Загрузчик классов - это объект, который отвечает за загрузку классов. Всякий раз, когда вы создаете экземпляр класса с использованием new, система выполнения пытается загрузить класс с использованием одного или нескольких экземпляров абстрактного класса ClassLoader. Вы можете определить пользовательские загрузчики классов для загрузки классов из сети, баз данных, других процессов или любого мыслимого источника данных.

Итак, если ваш клиент не хочет, чтобы вы использовали пользовательские загрузчики классов, не забудьте никогда не писать класс, который расширяет ClassLoader или любые его производные. Подробные сведения см. В документах java API ClassLoader10.

0

Пользовательский загрузчик классов позволит вам загружать классы из нетрадиционных источников (из любого места, которое вы можете себе представить, в том числе из ниоткуда, т. Е. Созданного «на лету»). Поскольку ваш клиент говорит об этом сообщении, классы могут загружаться только из стандартных источников (например, файловая система, файлы jar и т. Д.).