Der folgende Editor bringt Ihnen eine kurze Diskussion über die Standard-Lazy-Init-Parameter und Lazy-Init im Frühjahr. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.
Es gibt eine default-lazy-init="true"-Konfiguration auf dem Root-Knoten in der Spring-Konfiguration:
1 . Springs Standard-Lazy-Init-Parameter
Dieser Parameter zeigt ein verzögertes Laden an, das heißt, die mit Anmerkungen versehene Bean wird nicht instanziiert, wenn das Projekt gestartet wird, es sei denn, startet das Projekt Muss verwendet werden, das nicht instanziierte Annotations--Objekt wird injiziert und aufgerufen, wenn das Programm tatsächlich auf den Aufruf zugreift
Wenn der Frühling beginnt, ist der Parameter default-lazy-init standardmäßig auf false gesetzt und wird es tun Standardmäßig wird das gesamte Objektinstanzdiagramm geladen, von der Initialisierung ACTION über die Dienstkonfiguration bis hin zur Dao-Konfiguration, bis hin zur Datenbankverbindung, Transaktionen usw. Dies kann zwar die Belastung des Webservers zur Laufzeit reduzieren, ist für Entwickler aber zweifelsohne eine äußerst ineffiziente Einstellung.
spring stellt das Attribut default-lazy-init bereit, dessen Konfigurationsform in applicationContext.xml wie folgt lautet:
< beans default-lazy-init ="true" > ....... </beans>
In der tatsächlichen Entwicklung kann das Attribut default-lazy-init auf true gesetzt werden, was die Startzeit des Projekts erheblich verkürzen kann
2 Attribute im Frühling
1. lazy-init
<beans> <bean id="service1" type="bean路径" lazy-init="true"/> <bean id="service2" type="bean路径" lazy-init="false"> <property name="service1" ref="service1"/> </bean> </beans>
Für die beiden oben genannten Beans ist ein Lazy-Init-Attribut wahr und das other ist falsch. Was ist der Unterschied?
Wenn der IoC-Container startet, wird service1 nicht instanziiert, aber wenn der Container service2 instanziiert, wird auch service1 instanziiert. Mit anderen Worten: Bei lazy-init="true"-Beans wird die Bean nicht instanziiert, wenn der IoC-Container startet, sondern nur dann instanziiert, wenn der Container sie verwenden muss. Lazy-init wirkt sich positiv auf die Containereffizienz aus und Sie können unnötige Beans ignorieren.
Gleichzeitig können wir das Lazy-Init-Attribut in der entsprechenden Bean für bestimmte Module verwenden. Lazy-Init hat eine höhere Priorität als die Priorität von Default-Lazy-Init .
Spring-Anmerkungen können mit dem Annotations-Tag @Lazy(false) am Klassennamen annotiert werden, was der Konfiguration des lazy-init-Attributs im Bean
entspricht 2. abstract
<bean id="baseTxService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true"> </bean>
Wenn Bean abstract="true", wird das Bean nicht instanziiert
Dies dient lediglich dazu, Startzeit während des Entwicklungsprozesses zu sparen. und bei der Bereitstellung in der tatsächlichen Umgebung ist es nicht erforderlich, default-lazy-init auf true zu setzen. Schließlich ist es nicht üblich, es in einer tatsächlichen Umgebung bereitzustellen. Es ist kein großes Problem, es jedes Mal für eine Minute zu starten, und es kann die Servereffizienz verbessern.
Natürlich können nicht alle Beans „default-lazy-init“ auf „true“ setzen und können nicht für Scheduler-Beans verwendet werden
[Verwandte Empfehlungen]
1 Kostenloses Java-Video-Tutorial
2. Geek Academy Java-Video-Tutorial
Das obige ist der detaillierte Inhalt vonBeschreiben Sie kurz die Konfiguration default-lazy-init='true' in der Java-Konfiguration. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!