Pregunta

Perdóname si no consigo la terminología correcta.

Mi situación es la siguiente:

Tengo una clase, vamos a llamarlo theClass. Dentro de esta clase es un objeto theData.

Tengo XML para configurar el frijol theData, así:

<bean id="theData" class="com.abc.TheData">
        <property name="field" value="value1" />

    </bean>

y un regulador dentro theClass este modo:

public void setTheData(TheData theData)
{
     this.theData = theData;
}

Mi problema es que si no lo hago también crean el grano theClass en el XML (y por lo tanto no se puede dejar que se autowired), no va a saber a Autowire el campo theData (¿verdad?). Y debido a ciertas restricciones, no puedo configurar theClass en el XML (y por lo tanto más tarde tenerlo autowired). Por lo tanto, mi pregunta es, ¿cómo puedo hacer este trabajo? Soy un poco novato así que si me falta algo, no dude en señalarlo.

¿Fue útil?

Solución

Si usted puede controlar la primavera contexto, echarlo a AutowireCapableBeanFactory, y pasar la instancia de TheClass al método autowireBean(Object). Primavera tratará entonces de aplicar sus normas Autowiring a ese objeto.

Se necesitaría añadir @Autowired al método setTheData, sin embargo.

Otros consejos

Se podría utilizar @Resource o @Component.

Yo sólo veía ahora esta pregunta y pensó que podría añadir un método más de hacer lo que quiere (aunque el AutowireCapableBeanFactory sería mi elección). Puede aprovechar la anotación @Configurable de la manera que se describe en este blog

Usted debe ser capaz de usar sólo la anotación @Autowired en su variable de instancia que el colocador se pone, sin tener que declarar un frijol en su theClass XML. Es decir:

public class TheClass {
  @Autowired
  private TheData theData;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top