2017-02-15 3 views
0

Ich laufe in Abhängigkeit Einspritzzyklus Problem. Ich bitte um Redesign-Vorschläge. Vielen Dank.Federabhängigkeit Einspritzzyklus

Fehler Beschreibung: Die Abhängigkeiten von einigen der Bohnen in den Anwendungskontext einen Zyklus bilden:

Hier sind die beiden Klassen

Klasse 1:

@Service 
public class MyService { 

    private final Product1 finalProduct1; 
    private final Product2 finalProduct2; 

    @Autowired 
    public MyService (Product1 product1, Product2 product2) { 
    this.finalProduct1= product1; 
    this.finalProduct2= product2; 
    } 

    public List<String> getMyValues(String someParameter) { 
    ... 
    return myValues; 
    } 
    ... 
} 

Klasse 2:

@Service 
public class Product1 { 

    @Autowired 
    private MyService myService; 

    public List<someType> someMethod(String someParameter){ 
     List<String> myValues = myService.getMyValues(someParameter); 
     ... 
    } 
    ... 
} 
+0

Bitte fügen Sie Ihre Fehlerprotokoll – mvlaicevich

+2

Sie haben Ihre Frage beantwortet, indem sie zu fragen - es Abhängigkeitszyklus ist, denken über eine andere Architektur –

+0

Sorry, ich glaube, ich nicht eine Frage stellen hat. Ich frage nach Redesign-Vorschlägen. – Amitab

Antwort

0

Es ist ein Dependency-Cycle, wie Sie bereits in Ihrer Frage geantwortet haben.

Was ist das Problem hier?

  1. Frühling versucht, eine Bohne von MyService zu erstellen. Dazu muss der Konstruktor MyService(Product1 product1, Product2 product2) aufgerufen werden.

  2. spring benötigt die Abhängigkeit Product1 und sucht im Anwendungskontext. Es findet die Klasse Product1, die mit der Annotation @Service annotiert ist und versucht, eine Bean daraus zu erstellen (Aufruf des Standardkonstruktors). Dann versucht es die Eigenschaften zu injizieren. Dazu braucht es die MyService .. et voila. Zyklusabhängigkeit. Gehe zu 1. und fange von vorne an.