Nach der Untersuchung des Codes fand ich:
%Vor%Wie kann es möglich sein? Danke.
Von docs
%Vor% %Vor%Die in der Bean-Definition angegebenen Konstruktorargumente sind verwendet, um als Argumente an den Konstruktor der ExampleBean übergeben. Betrachten wir nun eine Variante von dieser Stelle, anstatt einen Konstruktor zu verwenden, Spring wird aufgefordert, eine statische Factory-Methode aufzurufen, um eine Instanz zurückzugeben des Objekts:
Beachten Sie, dass Argumente für die statische Factory-Methode über bereitgestellt werden Konstruktor-Arg-Elemente, genauso wie wenn ein Konstruktor hätte tatsächlich benutzt worden. Auch ist es wichtig zu erkennen, dass die Art von die Klasse, die von der Factory-Methode zurückgegeben wird, muss nicht von sein der gleiche Typ wie die Klasse, die die statische Factory-Methode enthält, obwohl es in diesem Beispiel ist. Eine Instanz (nicht statisch) Fabrik Die Methode würde im Wesentlichen identisch verwendet werden (abgesehen von die Verwendung des Factory-Bean-Attributs anstelle des Klassenattributs), Details werden hier nicht besprochen.
Das bedeutet einfach, dass com.test.checkDate
eine statische Methode namens getPreviousDate
hat. Ihre Fabrik, die die Objekte erstellt, ist com.test.checkDate
. Wir wissen nicht, welchen Typ das Objekt zurückgibt, wird in der Konfiguration nicht angegeben, wahrscheinlich ist java.util.Date
.
Die Definition spezifiziert nicht den Typ (Klasse) des zurückgegebenen Objekts, sondern nur die Klasse, die die Factory-Methode enthält.
Die constructor-arg
werden einfach als Parameter an getPreviousDate
übergeben. Da die Methode statisch ist, benötigt sie keine Instanz von checkDate
. Wenn es lustig klingt, constructor-arg
zum Aufrufen einer Methode zu verwenden, die technisch kein Konstruktor ist, denke ich, dass die statische Methode tatsächlich ein Objekt konstruiert, so dass es leichter zu merken ist.
Da Sie in einer früheren Version Ihrer Antwort "ohne Fabrik" erwähnt haben, denken Sie vielleicht an den Fall instanziierung mit einer Instanz-Factory-Methode , die das Attribut factory-bean
erfordert, aber dies ist der Fall Instanziierung mit eine statische Fabrikmethode .