Ich versuche, bestehende ProjektErste Frühling @Autowired und @postconstuct Arbeit
Aktuelle Bohne eine neue Bean einzuführen, ist
package w.x.y.z.pkgA
@Component
public class BeanA implements InterfaceA {
}
Und ich versuche neue Bean w.x.y.z.pkgB
package w.x.y.z.pkgB
public class BeanB implements InterfaceB {
@Autowired
private BeanA beanA
@PostConstruct
public void postConstructMethod() {
//Call some method in BeanA
}
}
hinzufügen
Von BeanB
möchte ich auf BeanA
Daten zugreifen und in BeanB
post construct möchte ichregistrierenmit BeanA
. Deshalb möchte ich BeanA
Methode
And All diese Pakete als Glas verpackt sind, nennen und Feder Kontext xml ist
<context:annotation-config />
<context:component-scan base-package="w.x.y.z.pkgA,w.x.y.z.pkgB" />
<bean id="beanb" clas="w.x.y.z.pkgB.BeanB"></bean>
Aber während des Einsatzes ich Ausnahme über Bohne in erstellen Zustand
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'context': Requested bean is currently in creation: Is there an unresolvable circular reference?
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:347)
at w.x.y.z.BeanA<init>(BeanA.java:25)
at w.x.y.z.BeanB.<init>(BeanB.java:35)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:147)
Ich habe auch versucht, @Autowired entfernt und das BeanA
Objekt mit getBeanFactory().getBean(BeanA.class)
zu bekommen. Aber ich bekomme denselben Fehler.
Wenn ich Bean-Eintrag aus XML-Datei entfernen, wird es ordnungsgemäß bereitgestellt aber Post-Konstrukt wird nie aufgerufen, da es nicht mehr eine Bean ist.
BeanA
ist überhaupt nicht abhängig von BeanB
. Keine Referenzen?
Gibt es eine Möglichkeit, diese @Autowired
und zu arbeiten, wenn 2 Bohnen im gleichen Glas sind?
Sorry, keine Ahnung, was die mögliche Kreis Referenz erzeugen konnte. Ein letzter Gedanke: Entfernen Sie die explizite Bean-Definition in Ihrer Context-Datei, fügen Sie der Bean eine '@ Component'-Annotation hinzu, da diese bereits im Bereich für Component Scan ist und Spring sein Bestes geben kann. (Meine irreführende Antwort wurde gelöscht) – meistermeier
Vorher es hier posten Ich habe es versucht. Aber kein Glück –