Es difícil explicar lo que realmente quiero. Tengo una interfaz que tiene un método getRuntimeInfo()
que me proporciona toda la información de depuración de tiempo de ejecución para las variables de una clase. Quiero ver la lista de todas las clases que implementan esta interfaz. Estoy usando Java y Spring. Una forma en que puedo hacer esto es obtener todos los granos del contexto de primavera y verificar usando el operador instanceof
. Pero no me gustaría hacer eso por obvio impacto en el rendimiento. ¿Tengo alguna otra opción?Mantenga un registro de todas las clases que implementan una interfaz en particular?
Respuesta
¿Qué pasa con esta solución:
@Component
public class WithAllMyInterfaceImpls {
@Autowire
List<MyInterface> allBeansThatImplementTheMyInterface;
}
la lista sólo se rellena una vez (en el arranque) por lo que no debería tener un impacto significativo en el rendimiento "normal" en tiempo de ejecución.
Comentario:
puede explicar su código
Usted sabe que la primavera es un contenedor COI. @Component
le dice a Spring que debe crear una instancia de esta clase (un llamado Spring Managed Bean). IOC significa también que el contenedor es responsable de inyectar referencias a otras instancias (Spring Managed Beans). @Autowire
(así como @Resource
y @Inject
- todos hacen lo mismo) es una anotación que le dice a Spring que este campo debe ser poblado por Spring. La primavera misma intenta averiguar con qué instancias debe rellenarse el campo. Una técnica predeterminada que utiliza la primavera es by type
, lo que significa que Spring inspecciona el tipo de campo y busca frijoles coincidentes. En su caso, es una lista genérica, esto es un poco especial. En este caso, Spring rellena el campo con una lista, donde los elementos son todos los beans que coinciden con el tipo genérico.
¿Qué tal el método getBeansOfType de ApplicationContext? ¿Devuelve un Mapa de los beans que implementan su interfaz?
- 1. ¿Cómo encontrar todas las clases que implementan una interfaz determinada?
- 2. NUnit - Cómo probar todas las clases que implementan una interfaz particular
- 3. ¿Cómo puedo hacer un seguimiento de (enumerar) todas las clases que implementan una interfaz?
- 4. Prueba de todas las clases que implementan una interfaz en Java
- 5. Cómo inyectar dependencias en clases que implementan una interfaz?
- 6. ¿Enumerar todas las clases de Delphi que implementan una interfaz determinada?
- 7. JAXB: las clases generadas implementan la interfaz
- 8. ¿Cómo encontrar todas las clases que implementan IDisposable?
- 9. Eclipse: encuentre todas las clases que extienden la interfaz
- 10. Encontrar todas las clases con un atributo en particular
- 11. Encontrar todas las clases implementando una interfaz específica
- 12. Inyectar diferentes clases que implementan la misma interfaz utilizando Ninject
- 13. ¿Cómo obtengo todas las instancias de todos los tipos cargados que implementan una interfaz determinada?
- 14. C# Genéricos: ¿Puedo restringir a un conjunto de clases que no implementan una interfaz?
- 15. Obtener solo las propiedades que implementan una interfaz
- 16. ¿Cómo puedo evitar escribir pruebas de unidades duplicadas para las clases que implementan la misma interfaz?
- 17. ¿podemos tener main() en una interfaz y diferentes implementaciones para main() en las clases que implementan esta interfaz?
- 18. PHP: ¿cómo obtener una lista de clases que implementan cierta interfaz?
- 19. ¿Por qué deberíamos colocar las interfaces con las clases que las usan en lugar de las que las implementan?
- 20. Encontrar todas las clases que heredan una interfaz en Visual Studio
- 21. ¿Por qué no todas las clases System.Web.UI.WebControl con propiedades de texto implementan ITextControl?
- 22. Crear una instancia de todas las clases implementando una interfaz específica
- 23. Enumerar todas las clases que heredan de una clase/interfaz específica
- 24. Restringir las clases que pueden implementar una interfaz
- 25. Obtención de todos los tipos que implementan una interfaz
- 26. ¿Cómo puedo encontrar qué clases implementan una interfaz determinada en Visual Studio?
- 27. ¿Cómo se puede pasar una Lista <objetos que implementan una interfaz> a un método?
- 28. ¿Reflejando todas las propiedades de una interfaz, incluidas las heredadas?
- 29. Eliminar todas las clases que comienzan con una cierta cadena
- 30. Obteniendo todas las clases de un paquete
Es solo la función normal de autovío de resortes, no hay nada especial. Es solo la función principal del resorte – Ralph
@ user1117398: extendí mi respuesta para explicarlo un poco. - Parece que deberías leer un Spring 3.0 !!! o 3.1 tutorial. – Ralph