2010-12-02 13 views

Respuesta

2

Puede inyectarlos mediante inyección de campo/setter. (Tenga en cuenta que la inyección del constructor está mal visto por la primavera, aunque es compatible)

+0

¿Por qué hay una preferencia por la inyección de setter sobre la inyección de constructor? Pensé que eran equivalentes. –

+0

La inyección del constructor puede dificultar la creación de instancias circulares. – Bozho

+0

@Bozho: así que en realidad es algo bueno ... deberían usarse dependencias circulares, ¿no? – TWiStErRob

0

en resumen, no. Spring admite algo llamado "inyección de método", pero es diferente de lo que estás pensando. Spring también es compatible con la inyección de constructor, pero no está llamando al constructor usted mismo, Spring is, y lo está conectando por sí mismo.

su lugar, puede utilizar la reflexión para crear instancias de la clase y pasar parámetros arbitrarios ti mismo:

Class<MyObject> clazz = MyObject.class; // this can be looked up or stored in a field, etc. 
MyObject myObject = clazz.getConstructor(String.class, int.class) 
         .newInstance("arbitrary parameter", 42); 
1

Parece que este rasgo vital finalmente se añadió en la primavera 4.1.0.RC2. Lo he probado y parece funcionar.

Se añadió como parte de la compra de entradas JIRA SPR-7431 ("Passing lookup-method arguments to created bean constructor"):

< lookup-método /> debe permitir especificar cualquier número de parámetros. Estos parámetros se deben pasar directamente al constructor del bean recién creado.

Para obtener más información sobre cómo se agregó finalmente la característica, this blog post fue escrita por el tipo que abrió el boleto JIRA.

Cuestiones relacionadas