Vorwort
Im vorherigen Artikel wird erwähnt, dass durch Schnittstellen wie Initialisierungsbean und Einwegbetrieb einige benutzerdefinierte Operationen zur Bean -Initialisierung und -zerstörung durchgeführt werden können. Eine Sache zu beachten ist, dass es sich nur um eine Operation handelt, nachdem die Bohne durch einen Container instanziiert wurde. Wenn Sie in der Welt des Frühlings als gewöhnlicher Business -Entwickler etwas über den Instanziierungsprozess tun möchten, müssen Sie offensichtlich nicht die AnwendungContext oder den Beanfactory erben, da uns der Frühlingscontainer einige Schnittstellen liefert, wodurch wir den Initialisierungsbetrieb von Beans durch Beanfactory in Form von Plug -Ins -Initialist -Heute -Abläufen in den Bereichen BPP -Absicht auf das BPB -Abgarten auf den BPB -T -Processor -T -Processor (asso.
Quellcode, einen kleinen Einblick
Diese Verwendung ist sehr einfach. Es hat nur zwei Methoden. Wir implementieren unseren eigenen BeanPostProcessor, und Spring kann ihn automatisch in den Container registrieren.
wobei die vorab der Bean -Instanziierung nach Beobachtungsmethode ausgeführt wird, nach der Einstellung der Eigenschaft jedoch vor der Initialisierungsmethode; Nachdem die Methode nach verschiedenen Initialisierungsmethoden ausgeführt wurde.
Wenn man davon sprach, fragen sich einige Menschen vielleicht, was der Unterschied zwischen dieser und anderen Initialisierungsgrenzflächen im Lebenszyklus ist. Andere Initialisierungsmethoden können auch Bohnen ändern. Diese Frage ist gut. Sprechen wir über den wesentlichen Unterschied zwischen dieser Schnittstelle und der InitializingBean Disposable -Schnittstelle und der maßgeschneiderten Init -Zerstörungsmethode.
Hier gibt es zwei spezielle BPPs. Ich muss sagen, dass, wenn Sie eine ähnliche Annotation wie die Injektionsfunktion von @Autowire oder Inject anpassen müssen (Sie können InjectionMetadata verwenden).
MergedBeandefinitionPostProcessor (im Folgenden als MBDPP bezeichnet)
InstantiationArebeanPostProcessor (im Folgenden als IABPP bezeichnet)
Sie alle erben von BPP, aber der Einstiegspunkt in der Erstellung von Federbohnen unterscheidet sich von dem gewöhnlichen BPP.
InstantiationArebeanPostProcessor -Schnittstelle
Siehe die Kommentare
Postprozessbeforderschaftsmethode
Überprüfen Sie die Methode für createBean -Methode von abstractAutoWirecapableBeAnfactory (diese Methode ist die Kernmethode zum Erstellen von Bohnen in Federbehältern). Sie können sehen, dass die Post -ProcessBeforinStantiation vor der Bean -Instanziierung vorhanden ist. Die Postprozessafterinstantiation wird nach der Instanziierung und vor der Autoowire -Injektion festgelegt. Es wird allgemein im Frühjahrsgerüst intern verwendet, aber hier gibt es ein großes Potenzial. Verwenden Sie die Postprozessbeforen -Stantiation, um Proxy -Objekte zu generieren (die allgemeine Methode besteht darin, die PostprozessorpeforinStantiation zurückzusetzen, wodurch der nachfolgende Prozess des Erstellens von Bean -Instanzen unterbricht. Das von dieser Methode zurückgegebene Objekt wird als Bean -Instanz verwendet). Siehe den Quellcode:
PostProcessPropertyValues -Methode
Verwenden Sie PostprocessPropertyValues, um verschiedene Operationen für Eigenschaften zu vervollständigen, Metadaten in Annotationen zu analysieren usw. Spring's @Autowire Injection, JSR330's @Inject und JSR250's @Resource- und andere Injektionsvorgänge werden alle über diese Methode abgeschlossen.
Diese Schnittstelle wird im Frühjahr verwendet, und Schüler, die interessiert sind, können den Quellcode lesen. Im Folgenden sind zwei typische Implementierungen aufgeführt.
AutoWiredAnnotationBeanPostProcessor
AbstractAutoproxyCreator
MergedBeandefinitionPostProcessor -Schnittstelle
Diese Schnittstelle übergibt eine RootbeanDefinition, mit der wir die Definition der Bean ändern können. @AutuWiredAnnotationBeanPostProcessor verwendet diese Methode, um die Mitglieder zu überprüfen und zu registrieren, die injiziert werden müssen.
BeanfactoryPostProcessor (BFPP)
Neben BeanPostProcessor gibt es eine andere Art von Dingen, die jeder weiß, das heißt beanfaktorischpostprozessor
BFPP ist ein wichtiges Erweiterungs -Plugin für Beanfactory und kann mit BeanDefinition angepasst werden. Sein Hauptunterschied zu BPP ist:
Okay, nachdem wir so viel gesagt haben, werfen wir einen Blick auf das allgemeine Flussdiagramm der Bohnenschöpfung des Frühlings. Hier sind nur die kritischeren Knoten markiert.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Referenzwert für das Studium oder die Arbeit eines jeden hat. Wenn Sie Fragen haben, können Sie eine Nachricht zur Kommunikation überlassen. Vielen Dank für Ihre Unterstützung bei Wulin.com.