2009-12-22 13 views
9

¿Cómo funciona la anotación de Wicket @SpringBean? ¿Utiliza la reflexión en tiempo de ejecución? ¿Hace que el compilador inyecte algún código? ¿O que?¿Cómo funciona la anotación de @SpringBean de Wicket?

+1

No hay una anotación '@ SpringBean' en Spring API. Hay uno en Wicket, sin embargo, ¿es eso lo que estás usando? – skaffman

+1

Ah, no lo sabía, sí, estoy usando Wicket. Cambiaré la pregunta y las etiquetas para reflejar eso. Gracias. – Tarquila

+0

@Tarquila - Creo que es más fácil solucionar esta cuestión para la primavera. Y agrega uno nuevo para Wicket. –

Respuesta

0

Spring utiliza el cargador de clases y ASM en tiempo de ejecución para buscar todas las clases anotadas.

Puede configure donde la primavera debe buscar los granos:

<context:component-scan base-package="some.package.to.start.from"/> 

Este utiliza el ClassPathBeanDefinitionScanner interno que utilizará el PathMatchingResourcePatternResolver para encontrar las clases y la MetadataReader para leer las anotaciones basadas en ASM.

+5

Sin embargo, este mecanismo no tiene nada que ver con '@ SpringBean', que es una construcción Wicket, no una primavera. – skaffman

+0

Nunca he usado Wicket. Pensé que se refería a las anotaciones de @Component, etc. Bueno saber. –

25

@SpringBean funciona usando Wicket's underlying Injector mechanism. Cuando crea una instancia de un componente de Wicket, el constructor de la clase base de componentes de Wicket introspecta la clase que se está instanciando, buscando la anotación @SpringBean. Si se encuentra el bean, Wicket genera un proxy para el bean de primavera y lo inyecta en el campo del componente. Este es el equivalente de Wicket de la anotación de Spring @Autowired, el efecto es similar. No tiene, sin embargo, nada que ver con la funcionalidad de escaneo de contexto/clase de Spring propia (por ejemplo, @Component), que trata sobre el descubrimiento automático de lo que es y no es un frijol, más bien tiene algo que ver con alambrado.

+3

Para usar esto solo necesita agregar el oyente SpringComponentInjector a la aplicación Wicket para escuchar las instancias de los componentes. – Matt

4

La clase marcada con una anotación @SpringBean tiene que tener uno de:

  1. Un constructor sin argumentos
  2. Una superclase con un constructor sin argumentos
  3. implementar una interfaz

Se emitirá una excepción si no se cumplen estas condiciones, ya que Wicket no podrá usar el proxy de la clase.

+0

esta es información útil, pero no es realmente una respuesta a la pregunta. podría ser mejor comentar la pregunta u otra respuesta. –

Cuestiones relacionadas