Frühjahr: init-Methode, PostConstruct, afterPropertiesSet : zu verwenden wenn man über andere?
Gibt es viele Initialisierung Möglichkeiten im spring-bean-Lebenszyklus.
init-Methode, PostConstruct annotation, afterPropertiesSet, Bean post-Initialisierung und auch Klasse Konstruktor. All diese können verwendet werden, für die Initialisierung einer bean.
Ich war verwirrt, Wann man diese über andere. Darüber hinaus ist es jedem Fall müssen wir diese option in einer einzigen Bohne? Wenn ja, bitte Beispiel wäre gut.
Wirklich gespannt auf einige gute Antworten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Unterschied zwischen dem Konstruktor und den anderen Optionen ist, dass der Konstruktor-code ist die erste, die ausgeführt werden, während die anderen Optionen werden nur aufgerufen werden, nachdem die Abhängigkeiten injiziert wurden, in die Bohnen (entweder aus @Autowired Anmerkungen oder XML-Datei).
Code, den Sie schreiben in den Konstruktor wird ausgeführt, während die bean-Eigenschaften sind noch nicht eingeleitet. Alle @Autowired Felder wäre null. Manchmal ist das, was Sie wollen, aber in der Regel will man den code zum ausführen nach Eigenschaften festgelegt werden.
Andere als das, ich sehen den Unterschied nicht, andere dann die Reihenfolge der Ausführung. Ich glaube nicht, dass es ein Fall ist, würden Sie wollen, um alle Optionen in der gleichen Klasse.
Ich würde vorschlagen, dass Sie nur den Konstruktor verwenden, wenn möglich. Es gibt einen sehr sehr guten Grund, dies zu tun: testen
Wenn Sie gehen, um unit-test einer Spring-bean, Sie werden wollen, aufbauen können, die Klasse mit minimalem Aufwand. Das bedeutet, dass Sie müssen nur den Konstruktor aufrufen, und sich nicht mit aufrufen von verschiedenen Lebenszyklus-Methoden auf Ihre eigenen. Das Letzte, was Sie wollen, wenn die Erstellung der Klasse geprüft zu werden, ist zu haben, zu wissen, wie die Objekt-Eigenschaft initialisiert.
Mit Feder Konstruktor-injection-Unterstützung können Sie ganz einfach injizieren anderen Bohnen oder Projekt-Eigenschaften in den Konstruktor dafür decken können fast jedes Szenario.
@PostConstruct
und seine alternativen.