Primavera: definir la propiedad de frijol (ref a otro bean) como opcionales
-
28-09-2019 - |
Pregunta
Tiene dos definiciones de frijol:
archivo a.xml
<bean id="A" class="com.A">
<property name="bClass" ref="B"/>
</bean>
archivo b.xml
<bean id="B" class="com.B"/>
En algunos casos b.xml archivo no contiene definición de frijol B.
Y de otro lado, archivo a.xml siempre contiene un enlace a la definición B.
¿Cómo definir referencia a bean B sea opcional , a fin de evitar org.springframework.beans.factory.NoSuchBeanDefinitionException
Solución 3
@Autowired (requerido = false) ayudado
Otros consejos
No se puede. Si usted tiene una referencia a B
, entonces B
debe existir. Usted necesita asegurarse de que existe algún tipo de talón de B
, la definición de lo que sería reemplazado por la definición de B
en b.xml
.
Como alternativa, No inyectar B
en A
, pero mirada maquillaje A
hasta B
usando BeanFactory.getBean("B")
, y manejar la potencial ausencia de B
mediante programación.
Sin embargo, otra posibilidad (en la parte superior de éstos sugerido por skaffman) es invertir la depenency. Deje que el B
frijol conoce la A
frijol. Incluso puede registrarse a sí mismo dentro de ella - es decir, llamar al organismo, por ejemplo:.
public class B {
private A a;
public void init() {
a.setB(this);
}
}