Heim >Java >JavaInterview Fragen >Fragen zum neuen Java-Interview 2020 – Frühling (2)
1. Sind Bohnen im Frühjahr fadensicher?
(Verwandte Empfehlungen: Java-Interviewfragen)
Ob die Bohnen im Spring-Container threadsicher sind, stellt der Container selbst keinen Thread bereit. Sicherheitsrichtlinie für die Bohnen, also Man kann sagen, dass die Bohnen im Federbehälter selbst keine Thread-Sicherheitseigenschaften aufweisen, die Details müssen jedoch noch in Kombination mit den Bohnen im spezifischen Bereich untersucht werden.
2. Wie viele Bohnenbereiche unterstützt Spring?
Wenn eine Bean-Instanz über den Spring-Container erstellt wird, kann nicht nur die Instanziierung der Bean-Instanz abgeschlossen werden, sondern es kann auch ein bestimmter Bereich für die Bean angegeben werden. Spring unterstützt die folgenden 5 Bereiche:
Singleton: Singleton-Modus. Im gesamten Spring IoC-Container haben mit Singleton definierte Beans nur eine Instanz
Prototyp: Prototypmodus, jeder Durchgang Wenn getBean Die Methode des Containers ruft die durch den Prototyp definierte Bean ab und generiert eine neue Bean-Instanz
Anfrage: Für jede HTTP-Anfrage generiert die mithilfe der Anforderung definierte Bean eine neue Instanz, d. h. jede HTTP-Anfrage ist eine andere Bean Instanzen werden generiert. Dieser Bereich ist nur gültig, wenn Spring in einer Webanwendung
Sitzung verwendet wird: Für jede HTTP-Sitzung wird eine neue Instanz unter Verwendung der durch die Sitzung definierten Bean-Beans generiert. Dieser Bereich ist auch nur gültig, wenn Spring in einer Webanwendung verwendet wird.
globalsession: Für jede globale HTTP-Sitzung generieren die mithilfe der Sitzung definierten Beans eine neue Instanz. Normalerweise ist dies nur gültig, wenn ein Portlet-Kontext verwendet wird. Dieser Bereich ist auch nur gültig, wenn Spring in einer Webanwendung verwendet wird
Die am häufigsten verwendeten Bereiche sind Singleton und Prototyp. Bei Singleton-Beans erhalten Sie jedes Mal dieselbe Instanz, wenn Sie die Bean anfordern. Der Container ist dafür verantwortlich, den Status der Bean-Instanz zu verfolgen und das Lebenszyklusverhalten der Bean-Instanz aufrechtzuerhalten.
Wenn eine Bean auf den Prototypbereich eingestellt ist, fordert das Programm die Bean jedes Mal mit dieser ID an, Spring erstellt eine neue Bean-Instanz und kehrt dann zum Programm zurück. In diesem Fall verwendet der Spring-Container nur das Schlüsselwort new, um die Bean-Instanz zu erstellen. Sobald die Erstellung erfolgreich ist, verfolgt der Container die Instanz nicht mehr und behält den Status der Bean-Instanz nicht bei.
Wenn Sie den Bereich der Bean nicht angeben, verwendet Spring standardmäßig den Singleton-Bereich.
Wenn Java eine Java-Instanz erstellt, muss es Speicher beantragen. Wenn es die Instanz zerstört, muss es die Speicherbereinigung abschließen. Diese Aufgaben führen zu einem Anstieg des Systemaufwands. Daher ist die Erstellung und Zerstörung von Prototyp-Scope-Beans relativ teuer. Sobald die Bean-Instanz im Singleton-Bereich erfolgreich erstellt wurde, kann sie wiederverwendet werden.
Vermeiden Sie es daher, Beans auf den Prototypbereich festzulegen, sofern dies nicht erforderlich ist.
3. Wie kann Spring Bohnen automatisch zusammenstellen?
Der Spring-Container ist für die Erstellung von Beans in der Anwendung und die Koordinierung der Beziehungen zwischen diesen Objekten über IDs verantwortlich. Als Entwickler müssen wir Spring mitteilen, welche Beans erstellt werden sollen und wie diese miteinander verbunden werden sollen.
Es gibt zwei Möglichkeiten, Beans im Frühjahr zusammenzustellen:
1. Impliziter Bean-Erkennungsmechanismus und automatische Assemblierung
2. Anzeige der Konfiguration in Java-Code oder XML
Natürlich können diese Methoden auch zusammen angewendet werden.
4. Welche Implementierungsmethoden gibt es für Frühlingstransaktionen?
Programmatisches Transaktionsmanagement ist die einzige Option für POJO-basierte Anwendungen. Wir müssen beginTransaction(), commit(), rollback() und andere Methoden zur Transaktionsverwaltung im Code aufrufen. Dies ist eine programmatische Transaktionsverwaltung.
Deklaratives Transaktionsmanagement basierend auf TransactionProxyFactoryBean
Deklaratives Transaktionsmanagement basierend auf @Transactional
Konfigurieren von Transaktionen basierend auf Aspectj AOP
5 über die Transaktionsisolation von Spring?
Die Transaktionsisolationsstufe bezieht sich auf den Grad der Isolation zwischen der Änderung von Daten durch eine Transaktion und einer anderen parallelen Transaktion, wenn mehrere Transaktionen gleichzeitig auf dieselben Daten zugreifen, wenn der erforderliche Isolationsmechanismus nicht vorhanden ist Wenn es übernommen wird, können folgende Probleme auftreten:
Dirty Read: Eine Transaktion liest nicht festgeschriebene Aktualisierungsdaten von einer anderen Transaktion.
Phantom-Lesung: Beispielsweise werden bei der ersten Transaktion die Daten in einer Tabelle geändert. Diese Änderung betrifft beispielsweise „alle Datenzeilen“ in der Tabelle. Gleichzeitig werden durch die zweite Transaktion auch die Daten in dieser Tabelle geändert. Diese Änderung besteht darin, „eine Zeile mit neuen Daten“ in die Tabelle einzufügen.
Dann wird der Benutzer, der die erste Transaktion durchführt, feststellen, dass die Tabelle immer noch unveränderte Datenzeilen enthält, als ob er halluzinieren würde.
Nicht wiederholbares Lesen: Beispielsweise werden in derselben Transaktion zwei identische Select-Anweisungen nacheinander ausgeführt. In diesem Zeitraum wurden in dieser Transaktion keine DDL-Anweisungen ausgeführt, die nacheinander erhaltenen Ergebnisse sind jedoch inkonsistent -wiederholbar.
Das obige ist der detaillierte Inhalt vonFragen zum neuen Java-Interview 2020 – Frühling (2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!