Heim >Java >javaLernprogramm >Detaillierte Java-Analyse des Bean-Bereichs

Detaillierte Java-Analyse des Bean-Bereichs

WBOY
WBOYnach vorne
2022-08-31 17:28:041497Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java Das Spring-Framework ist ein IoC-Container, der Bean verwaltet. Daher ist Bean natürlich eine wichtige Ressource in Spring. Wie viele Arten gibt es? Schauen wir es uns gemeinsam an, ich hoffe, es wird für alle hilfreich sein.

Detaillierte Java-Analyse des Bean-Bereichs

Empfohlene Studie: „Java-Video-Tutorial

Das Spring-Framework ist ein IoC-Container, der Beans verwaltet. Beans sind also von Natur aus wichtige Ressourcen im Frühling. Was bedeutet also der Umfang einer Bean? Wie viele Arten gibt es? Werfen wir als nächstes einen Blick darauf.

PS: Öffentliche Klassen in Java können Beans oder Java Beans heißen.

1. Geltungsbereich

Der Geltungsbereich einer Bean bezieht sich auf einen bestimmten Verhaltensmodus der Bean im gesamten Spring-Framework. Der Singleton-Bereich bedeutet beispielsweise, dass es im gesamten Spring nur eine Kopie der Bean gibt und diese global geteilt wird. Wenn jemand den Wert ändert, liest eine andere Person den geänderten Wert.

Zum Beispiel definieren wir in Spring einen Singleton-Bean-Objektbenutzer (der Standardbereich ist Singleton. Der spezifische Implementierungscode lautet wie folgt:

@Component
public class UserBean {
    @Bean
    public User user() {
        User user = new User();
        user.setId(1);
        user.setName("Java"); // 此行为重点:用户名称为 Java
        return user;
    }
}

Dann verwenden und ändern wir das Benutzerobjekt in Klasse A, den spezifischen Implementierungscode). lautet wie folgt:

@Controller
public class AController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        user.setName("MySQL"); // 此行为重点:将 user 名称修改了
        return user;
    }
}

Schließlich wird das Benutzerobjekt auch in Klasse B verwendet. Der spezifische Implementierungscode lautet wie folgt:

@Controller
public class BController {
    @Autowired
    private User user;
    public User getUser() {
        User user = user;
        return user;
    }
}

Wenn wir zu diesem Zeitpunkt auf die getUser-Methode im B-Objekt zugreifen, werden wir feststellen, dass die Der Benutzername ist derzeit Klasse A. „MySQL“ wird in „MySQL“ anstelle des ursprünglichen „Java“ geändert, was bedeutet, dass der Bean-Objektbenutzer standardmäßig den Singleton-Bereich verwendet. Wenn dieses Singleton-Objekt irgendwo geändert wird, erhalten andere Klassen bei einem erneuten Aufruf einen geänderten Wert.

2. Bereichsklassifizierung

Im Frühjahr gibt es fünf gängige Bereiche von Bean:

  • Prototyp: Prototypbereich (Mehrfachfallbereich);
  • Sitzung: Sitzungsumfang;
  • Anwendung: Globaler Geltungsbereich.
  • Hinweis: Die letzten drei Bereiche gelten nur für das Spring MVC-Framework.

2.1 SingletonOffizielle Beschreibung: (Standard) Bezieht eine einzelne Bean-Definition auf eine einzelne Objektinstanz für jeden Spring IoC-Container.

Beschreibung: Es gibt nur eine Instanz der Bean in diesem Bereich im IoC-Container: Get Das Bean (dh über applicationContext.getBean und andere Methoden erhalten) und Assembly-Beans (dh über @Autowired injiziert) sind dasselbe Objekt.

Szenario: Normalerweise verwenden

stateless

Beans diesen Bereich. Statuslos bedeutet, dass der Eigenschaftsstatus des Bean-Objekts nicht aktualisiert werden muss.

Hinweis: Spring wählt diesen Bereich standardmäßig aus.

2.2-PrototypOffizielle Beschreibung: Erweitert eine einzelne Bean-Definition um eine beliebige Anzahl von Objektinstanzen.

Beschreibung: Jede Anforderung für eine Bean in diesem Bereich erstellt eine neue Instanz: Holen Sie sich die Bean (d. h. über applicationContext). GetBean und andere Methoden) und Assembly-Beans (d. h. über @Autowired injiziert) sind neue Objektinstanzen.

Szenario: Normalerweise verwenden

zustandsbehaftete

Beans diesen Bereich.

2.3 AnfrageOffizielle Beschreibung: Bezieht sich auf den Lebenszyklus einer einzelnen HTTP-Anfrage. Das heißt, jede HTTP-Anfrage verfügt über eine eigene Instanz einer Bean, die auf der Rückseite einer einzelnen Bean-Definition erstellt wird Kontext eines webfähigen Spring ApplicationContext.

Beschreibung: Jede HTTP-Anfrage erstellt eine neue Bean-Instanz, ähnlich einem Prototyp.

Szenario: Eine gemeinsam genutzte HTTP-Anfrage- und Antwort-Bean.

Hinweis: Beschränkt auf die Verwendung im Spring MVC-Framework.

2.4-Sitzung

Offizielle Beschreibung: Bezieht eine einzelne Bean-Definition auf den Lebenszyklus einer HTTP-Sitzung ein. Nur gültig im Kontext eines webfähigen Spring ApplicationContext.

Beschreibung: Definieren Sie in einer HTTP-Sitzung eine Bean-Instanz.

Szenario: Shared Bean einer Benutzersitzung, zum Beispiel: Aufzeichnen der Anmeldeinformationen eines Benutzers.

Hinweis: Beschränkt auf die Verwendung im Spring MVC-Framework.

2.5-Anwendung

Offizielle Beschreibung: Bezieht eine einzelne Bean-Definition auf den Lebenszyklus eines ServletContext ein. Nur gültig im Kontext eines webfähigen Spring ApplicationContext.

Beschreibung: Definieren Sie in einem HTTP-Servlet-Kontext eine Bean-Instanz.

Szenario: Kontextinformationen von Webanwendungen, z. B. das Aufzeichnen gemeinsam genutzter Informationen einer Anwendung.

Hinweis: Beschränkt auf die Verwendung im Spring MVC-Framework.

3. Bereichseinstellung

Wir können den Bereich der Bean über die @Scope-Annotation festlegen. Es gibt zwei Möglichkeiten, ihn festzulegen:

Den spezifischen Wert des Bereichs direkt festlegen, wie zum Beispiel: @Scope("prototype" ) ;

Legen Sie die von ConfigurableBeanFactory und WebApplicationContext bereitgestellten SCOPE_XXX-Variablen fest, z. B. @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE).

Der spezifische Einstellungscode lautet wie folgt:

Der Umfang einer Bean bezieht sich auf ein bestimmtes Verhaltensmuster der Bean im gesamten Spring-Framework. Es gibt 5 gemeinsame Bereiche von Bean: Singleton (Einzelfallbereich), Prototyp (Prototypbereich), Anfrage (Anforderungsbereich), Anwendung (globaler Bereich). Beachten Sie nur die letzten drei Funktionen verfügbar im Spring MVC-Framework.

Empfohlenes Lernen: „Java-Video-Tutorial

Das obige ist der detaillierte Inhalt vonDetaillierte Java-Analyse des Bean-Bereichs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:jb51.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen