Cómo instancia Spring esta clase y su dependencia
Frecuentes
Visto 72 veces
1
No estoy seguro de que esto esté relacionado con un resorte o no:
Tengo una clase de frijol como esta
class BeanClass {
private ServiceA serviceA;
private ServiceB serviceB;
public BeanClass() {}
public void setServiceA(ServiceA serviceA) {
this.serviceA = serviceA;
}
public void setServiceB(ServiceB serviceB) {
this.serviceB = serviceB;
}
public void callService() {
serviceA.a();
serviceB.b();
}
}
y su configuración:
<bean id="beanClass" class="BeanClass">
<property name="serviceA" ref="serviceA"/>
<property name="serviceB" ref="serviceB"/>
</bean>
pero creo una instancia del bean con una nueva palabra clave en una clase de controlador:
class ControllerClass {
public void someMethod() {
BeanClass beanClass = new BeanClass();
beanClass.callService();
}
}
mi problema es cómo ServiceA y ServiceB se instanciaron correctamente. ya que uso new para obtener un objeto de clase, y nunca configuro su miembro de campo.
1 Respuestas
1
No quieres hacer:
BeanClass beanClass = new BeanClass();
Esto, en pocas palabras, es el punto central del contenedor IOC de Spring. Debe dejar que el contenedor IOC le dé una referencia a su BeanClass
@Autowired
BeanClass myBeanClass;
*Esto no está completamente completo, ya que necesitará un poco de cableado adicional para su controlador.
contestado el 03 de mayo de 12 a las 20:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas spring or haz tu propia pregunta.
¡Gracias! Sé que esto no es una buena práctica. Solo quiero asegurarme de cómo Spring crea una instancia de su miembro de campo. por ejemplo, ServicioA, ServicioB. - Liqun sol
Creará instancias para las 2 propiedades que definió y luego los llamará setters. - azotea
¡gracias! Quiere decir que Spring usará la definición de bean para instanciar BeanClass cuando vea una nueva BeanClass(), incluso yo la llamo desde un método normal y la asigno a una variable local. - Liqun sol