Por ejemplo, si tengo la anotación @MyOwnAnnotation
y tengo estas clases en mi classpath, de modo que podría escanear classpath posiblemente con algún tipo de filtro (por ejemplo, escanear solo paquetes comenzando con my.own.app.*
) y obtener lista de todas las clases con la anotación @MyOwnAnnotation
? Estoy usando Guice como framework de inyección y no uso Spring.Escanee classpath para las clases con anotación personalizada
14
A
Respuesta
12
Sí, consulte la biblioteca Scannotation.
Además, consulte la siguiente publicación de blog que documents use of Scannotation.
Ejemplo básico:
URL[] urls = ClasspathUrlFinder.findClassPaths(); // scan java.class.path
AnnotationDB db = new AnnotationDB();
db.scanArchives(urls);
Set<String> entityClasses =
db.getAnnotationIndex().get(MyOwnAnnotation.class.getName());
Sus anotaciones tendrán que tener la retención 'en tiempo de ejecución' de modo que estén disponibles en el archivo .class
en tiempo de ejecución.
0
Usted puede tratar de maíz-cps
Ejemplo:
List<Class<?>> classes = CPScanner.scanClasses(new PackageNameFilter("net.sf.corn.cps.*"),new ClassFilter().appendAnnotation(SampleAnnotation.class));
poner el dependecy a continuación en su pom.xml
<dependency>
<groupId>net.sf.corn</groupId>
<artifactId>corn-cps</artifactId>
<version>1.0.1</version>
</dependency>
1
Usted podría intentar mi biblioteca FastClasspathScanner:
List<String> classNames = new FastClassPathScanner("my.own.app")
.scan()
.getNamesOfClassesWithAnnotation(MyOwnAnnotation.class);
0
De hecho, recomendaría otro enfoque, mejor que todos los demás (dado que todos usan el escaneo classpath, que es lento). Se llama ClassIndex y Que los índices de clases anotadas:
Cuestiones relacionadas
- 1. JUnit anotación personalizada
- 2. ¿Cómo crear una lista de clases anotadas con mi anotación personalizada?
- 3. Anotación JAXB para la jerarquía de clases
- 4. anotación personalizada Asp.Net MVC 4
- 5. Anotación personalizada de Java y carga dinámica
- 6. Cómo crear una anotación personalizada en java?
- 7. anotación para hacer que un método privado sea público solo para las clases de prueba
- 8. ¿Cómo agregar una anotación personalizada a Spring MVC?
- 9. F # Tipo Anotación para las listas
- 10. Escanee e imprima usando el dispositivo Android
- 11. @MustOverride anotación?
- 12. Spicing C con las clases
- 13. Primavera: Inyectar URL para el recurso classpath
- 14. Establecer carpeta para classpath
- 15. @AspectJ pointcut para subclases de una clase con una anotación
- 16. @GuardedBy anotación con java.util.concurrent.locks.ReadWriteLock
- 17. ¿Cómo compilar el procesador de anotación con Ant?
- 18. ¿Cómo agregar a classpath todas las clases del conjunto de directorios en hormiga?
- 19. ¿Cómo usar un procesador de anotación personalizado con Maven 2?
- 20. Imagen personalizada para MKAnnotation
- 21. Cómo lidiar con el conflicto classpath
- 22. Java 6 configuración de procesamiento de anotación con Ant
- 23. ¿Cómo usar las clases de fábrica con linq para sql?
- 24. C++ stl vector para las clases con copia privada constructor?
- 25. Habilitación de las clases para su uso con impulso :: lexical_cast
- 26. método equals() para las clases con asociación bidireccional
- 27. anotación ggplot2 con superíndices
- 28. Extender entidades hibernadas con la anotación
- 29. ¿Imprime OSGI bundle classpath?
- 30. Vista de anotación personalizada para la ubicación del usuario que no mueve la vista de mapa
Es posible encontrar otras alternativas mejores - aquí: http://stackoverflow.com/questions/259140/scanning-java-annotations-at-runtime o si No cuelgue en el escaneo classpath, vea mi respuesta a continuación para una solución alternativa y más rápida. –