Как мне выполнить поиск аннотированного класса по всему пути к классу?
Я создаю библиотеку и хочу разрешить пользователям комментировать свои классы, поэтому при запуске веб-приложения мне нужно просканировать весь путь к классу на наличие определенных аннотаций.
Я думаю о чем-то вроде новой функциональности для веб-служб Java EE 5 или EJB. Вы комментируете свой класс с помощью @WebService или @EJB, и система находит эти классы во время загрузки, поэтому к ним можно получить удаленный доступ.
Поставщик компонентов, который сканирует путь к классу из базового пакета. Затем он применяет фильтры исключения и включения к полученным классам для поиска кандидатов.
Решение Spring - это правильный путь, если вы используете Spring. В противном случае это большая зависимость.
Прямое использование ASM немного громоздко.
Прямое использование Java Assist тоже является неуклюжим.
Annovention очень легкий и удобный. Интеграции с maven пока нет.
Reflections индексирует все, а затем выполняется очень быстро.
Ответ 3
Вы можете находить классы с любой заданной аннотацией с помощью ClassGraph, а также выполнять поиск по другим представляющим интерес критериям, например, по классам, реализующим данный интерфейс. (Отказ от ответственности, я являюсь автором ClassGraph .) ClassGraph может создавать абстрактное представление всего графа классов (все классы, аннотации, методы, параметры метода и поля) в памяти для всех классов в пути к классам или для классов в пакетах, внесенных в белый список, и вы можете запрашивать этот граф классов по своему усмотрению. ClassGraph поддерживает больше механизмов спецификации путей к классам и загрузчиков классов, чем любой другой сканер, а также отлично работает с новой модульной системой JPMS, поэтому, если вы основываете свой код на ClassGraph, ваш код будет максимально переносимым. Ознакомьтесь с API здесь.
Ответ 4
Если вам нужно действительно легкое решение (без зависимостей, простой API, файл jar размером 15 КБ) и очень быстрое, взгляните на annotation-detector найденное по адресу https://github.com/rmuller/infomas-asl