In der Kolumne „MySQL-Tutorial“ erfahren Sie, was Sie über den Frühling beherrschen müssen.
Hallo zusammen! Ich bin ein begeistertes Mitglied des Chaoyang-Volkes. Der Frühlingsrahmen ist eine Frage, die in Vorstellungsgesprächen unbedingt gestellt werden muss. Was genau ist darin enthalten? Werfen wir einen Blick darauf. Dies ist auch eine Frage, die ich oft in Interviews stelle, und sie spiegelt auch die Fähigkeit eines Programmierers wider, das Framework zu verstehen.
Wir stellen das Spring-Framework vor
Spring ist ein leichtes Framework, das entwickelt wurde, um die Entwicklungseffizienz und Systemwartbarkeit von Entwicklern zu verbessern. Was wir allgemein als Spring Framework bezeichnen, ist eine Sammlung vieler Module, die uns bei der Entwicklung leicht unterstützen können. Diese Module sind Kerncontainer, Datenzugriff/-integration, Web, AOP (Aspektorientierte Programmierung), Tools, Messaging und Testmodule. Beispielsweise ist die Core-Komponente im Core Container der Kern aller Spring-Komponenten, Beans-Komponenten und Context-Komponenten bilden die Grundlage für die Implementierung von IOC und DI und AOP-Komponenten werden zur Implementierung aspektorientierter Programmierung verwendet. 6 Merkmale des Frühlings:
Das Bild unten entspricht der Spring 4 .x-Version, der Portlet-Komponente des Web-Moduls in der neuesten Version 5.x wurde aufgegeben und die WebFlux-Komponente für asynchrone Responsive-Verarbeitung wurde hinzugefügt.
Spring Core: Grundsätzlich kann man sagen, dass alle anderen Funktionen von Spring von dieser Klassenbibliothek abhängen. Bietet hauptsächlich IOC- und DI-Funktionen.
Spring Aspects: Dieses Modul bietet Unterstützung für die Integration mit AspectJ.
Spring AOP: Bietet aspektorientierte Programmierimplementierung.
Spring JDBC: Java-Datenbankverbindung.
Spring JMS: Java-Messaging-Dienst.
Spring ORM: Wird zur Unterstützung von ORM-Tools wie Hibernate verwendet.
Spring Web: Bietet Unterstützung für die Erstellung von Webanwendungen.
Frühlingstest: Bietet Unterstützung für JUnit- und TestNG-Tests.
Sprechen Sie über Ihr Verständnis von Spring IOC und AOP. Vers (Wende) ist eine Designidee, Dies bedeutet, dass die Steuerung manuell erstellter Objekte im Programm zur Verwaltung an das Spring-Framework übergeben wird. IOC wird auch in anderen Sprachen verwendet und ist nicht spezifisch für Spring. Der IOC-Container ist der Träger, den Spring zum Implementieren von IOC verwendet. Der IOC-Container ist eigentlich eine Karte (Schlüssel, Wert), und in der Karte werden verschiedene Objekte gespeichert.
Belassen Sie die gegenseitige Abhängigkeit zwischen Objekten, die vom IOC-Container verwaltet werden sollen, und der IOC-Container schließt die Injektion der Objekte ab. Dies kann die Anwendungsentwicklung erheblich vereinfachen und Anwendungen von komplexen Abhängigkeiten befreien. Der IOC-Container ist wie eine Fabrik. Wenn wir ein Objekt erstellen müssen, müssen wir nur die Konfigurationsdatei/Anmerkungen konfigurieren, ohne darüber nachzudenken, wie das Objekt erstellt wird. In tatsächlichen Projekten kann eine Service-Klasse Hunderte oder sogar Tausende von Klassen als unterste Ebene haben. Wenn wir diesen Service instanziieren müssen, müssen wir möglicherweise jedes Mal die Konstruktoren aller zugrunde liegenden Klassen dieses Services herausfinden, was verwirrend sein kann Leute. Verrückt machen. Wenn Sie IOC verwenden, müssen Sie es nur konfigurieren und bei Bedarf darauf verweisen, was die Wartbarkeit des Projekts erheblich erhöht und die Schwierigkeit der Entwicklung verringert.
In der Spring-Ära konfigurierten wir Beans normalerweise über XML-Dateien. Später waren Entwickler der Meinung, dass es nicht gut sei, XML-Dateien zum Konfigurieren von Beans zu verwenden, sodass die Konfiguration von Spring Boot-Annotationen nach und nach populär wurde.
AOP
AOP (Aspektorientierte Programmierung) kann Logik oder Verantwortlichkeiten kombinieren, die nichts mit dem Geschäft zu tun haben, aber häufig von Geschäftsmodulen aufgerufen werden (z. B. Transaktionsverarbeitung, Protokollverwaltung, Berechtigungskontrolle usw.) sind gekapselt, um die Reduzierung doppelten Codes im System zu erleichtern, die Kopplung zwischen Modulen zu reduzieren und zukünftige Skalierbarkeit und Wartbarkeit zu erleichtern.
Spring AOP basiert auf einem dynamischen Proxy. Wenn das zu vermittelnde Objekt eine bestimmte Schnittstelle implementiert, verwendet Spring AOP den dynamischen JDK-Proxy, um das Proxy-Objekt zu erstellen. Für Objekte, die die Schnittstelle nicht implementieren, kann der dynamische JDK-Proxy nicht verwendet werden Verwenden Sie stattdessen den dynamischen CGlib-Proxy, um eine Unterklasse des Proxy-Objekts als Proxy zu generieren.
Natürlich können Sie auch AspectJ verwenden. AspectJ wurde in Spring AOP integriert und sollte als das umfassendste AOP-Framework im Java-Ökosystem angesehen werden. Nach der Verwendung von AOP können wir einige allgemeine Funktionen abstrahieren und sie direkt dort verwenden, wo sie benötigt werden, was die Codemenge erheblich vereinfachen kann. Wir müssen neue Funktionen bequem hinzufügen und die Skalierbarkeit des Systems verbessern. AOP wird in Szenarien wie Protokollierungsfunktionen, Transaktionsverwaltung und Berechtigungsverwaltung verwendet.
Der Unterschied zwischen Spring AOP und AspectJ AOP
Spring AOP ist eine Laufzeitverbesserung, während AspectJ eine Kompilierungszeitverbesserung ist. Spring AOP basiert auf Proxying, während AspectJ auf Bytecode-Manipulation basiert.
Spring AOP hat AspectJ integriert, das als das vollständigste AOP-Framework im Java-Ökosystem angesehen werden sollte. AspectJ ist leistungsfähiger als Spring AOP, aber Spring AOP ist relativ einfacher.
Wenn wir weniger Aspekte haben, wird es kaum einen Leistungsunterschied zwischen den beiden geben. Wenn jedoch zu viele Aspekte vorhanden sind, ist es am besten, AspectJ zu wählen, das viel schneller als SpringAOP ist.
Welchen Umfang haben Bohnen im Frühling?
Singleton: Die einzige Bean-Instanz, Beans in Spring sind standardmäßig Singletons.
Prototyp: Mit jeder Anfrage wird eine neue Bean-Instanz erstellt.
Anfrage: Jede HTTP-Anfrage generiert eine neue Bean, die nur innerhalb der aktuellen HTTP-Anfrage gültig ist.
Sitzung: Jede HTTP-Anfrage generiert eine neue Bean, die nur innerhalb der aktuellen HTTP-Sitzung gültig ist.
global-session: Der globale Sitzungsbereich ist nur in Portlet-basierten Webanwendungen sinnvoll und in Spring 5 nicht mehr verfügbar. Portlets sind kleine Java-Web-Plug-Ins, die Snippets semantischen Codes (z. B. HTML) generieren können. Sie basieren auf Portlet-Containern und können HTTP-Anfragen wie Servlets verarbeiten. Aber im Gegensatz zu Servlets hat jedes Portlet eine andere Sitzung.
Verstehen Sie die Thread-Sicherheitsprobleme von Singleton Beans im Frühling?
Meistens verwenden wir kein Multithreading im System, daher achten nur wenige Menschen auf dieses Problem. Singleton-Beans haben Threading-Probleme, vor allem weil das Schreiben von Vorgängen in die nicht statischen Mitgliedsvariablen dieses Objekts zu Thread-Sicherheitsproblemen führt, wenn mehrere Threads dasselbe Objekt betreiben.
Es gibt zwei gängige Lösungen:
Versuchen Sie, die Definition veränderlicher Mitgliedsvariablen im Bean-Objekt zu vermeiden (nicht sehr realistisch).
Definieren Sie eine ThreadLocal-Mitgliedsvariable in der Klasse und speichern Sie die erforderlichen variablen Mitgliedsvariablen in ThreadLocal (eine empfohlene Methode).
Bohnenlebenszyklus im Frühling?
Der Bean-Container findet die Spring Bean-Definition in der Konfigurationsdatei.
Der Bean-Container verwendet die Java Reflection API, um eine Bean-Instanz zu erstellen.
Wenn einige Attributwerte beteiligt sind, verwenden Sie die set()-Methode, um einige Attributwerte festzulegen.
Wenn die Bean die BeanNameAware-Schnittstelle implementiert, rufen Sie die Methode setBeanName() auf und übergeben Sie den Namen der Bean.
Wenn das Bean die Schnittstelle BeanClassLoaderAware implementiert, rufen Sie die Methode setBeanClassLoader() auf und übergeben Sie die Instanz des ClassLoader-Objekts.
Wenn das Bean die BeanFactoryAware-Schnittstelle implementiert, rufen Sie die Methode setBeanClassFacotory() auf und übergeben Sie die Instanz des ClassLoader-Objekts.
Ähnlich wie oben werden die entsprechenden Methoden aufgerufen, wenn andere *Aware-Schnittstellen implementiert sind.
Wenn es ein BeanPostProcessor-Objekt gibt, das sich auf den Spring-Container bezieht, der dieses Bean lädt, führen Sie die Methode postProcessBeforeInitialization() aus.
Wenn das Bean die InitializingBean-Schnittstelle implementiert, führen Sie die Methode afeterPropertiesSet() aus.
Wenn die Bean-Definition in der Konfigurationsdatei das Attribut init-method enthält, führen Sie die angegebene Methode aus.
Wenn es ein BeanPostProcess-Objekt gibt, das sich auf den Spring-Container bezieht, der dieses Bean lädt, führen Sie die Methode postProcessAfterInitialization() aus.
Wenn Sie eine Bean zerstören möchten und die Bean die Schnittstelle „DisposableBean“ implementiert, führen Sie die Methode destroy() aus.
Wenn Sie eine Bean zerstören möchten und die Definition der Bean in der Konfigurationsdatei das Attribut destroy-method enthält, führen Sie die angegebene Methode aus.
Erzählen Sie mir etwas über Ihr Verständnis von Spring MVC?
Wenn wir über dieses Problem sprechen, müssen wir die vorherigen Epochen von Model1 und Model2 ohne Spring MVC erwähnen.
**Model1-Ära:**Viele Back-End-Programmierer, die erst spät Java gelernt haben, waren möglicherweise nicht mit der JavaWeb-Anwendungsentwicklung im Model1-Modus vertraut. Im Model1-Modus besteht die gesamte Webanwendung fast ausschließlich aus JSP-Seiten, und nur eine kleine Anzahl von JavaBeans wird für die Verarbeitung von Datenbankverbindungen, Zugriffen und anderen Vorgängen verwendet. In diesem Modus ist JSP sowohl die Kontrollschicht als auch die Präsentationsschicht. Offensichtlich gibt es bei diesem Modell viele Probleme. Beispielsweise sind Steuerlogik und Leistungslogik miteinander vermischt, was zu einer extrem niedrigen Code-Wiederverwendungsrate führt. Ein weiteres Beispiel ist, dass Front-End und Back-End voneinander abhängig sind, was das Testen erschwert und die Entwicklungseffizienz äußerst gering ist.
Modell2-Ära: Freunde, die Servlet studiert und verwandte Demos durchgeführt haben, sollten das Entwicklungsmodell von Java Bean (Modell) + JSP (Ansicht) + Servlet (Controller) verstehen. Dies ist das frühe Java Web MVC-Entwicklungsmodell. Das Modell sind die im System beteiligten Daten, d. h. Dao und Beans. Die Ansicht wird zum Anzeigen der Daten im Modell verwendet. Der Controller sendet Benutzeranforderungen zur Verarbeitung an Servlet, gibt die Daten an JSP zurück und zeigt sie an Benutzer.
Im Model2-Modus gibt es immer noch viele Probleme. Der Grad der Abstraktion und Kapselung von Model2 ist bei weitem nicht ausreichend. Infolgedessen entstanden viele MVC-Frameworks im Zusammenhang mit der Java-Webentwicklung, wie z. B. Struts2. Da Struts2 jedoch relativ umständlich ist, erschien das Spring MVC-Framework mit der Beliebtheit des Spring-Leichtbau-Entwicklungsframeworks im Spring-Ökosystem. Spring MVC ist derzeit das beste MVC-Framework. Spring MVC ist einfacher und bequemer zu verwenden, weist eine höhere Entwicklungseffizienz auf und läuft schneller.
MVC ist ein Designmuster und Spring MVC ist ein hervorragendes MVC-Framework. Spring MVC kann uns dabei helfen, eine prägnantere Webschicht zu entwickeln, und es ist natürlich in das Spring-Framework integriert. Unter Spring MVC unterteilen wir Back-End-Projekte im Allgemeinen in Service-Schicht (Verarbeitungsgeschäft), Dao-Schicht (Datenbankoperationen), Entitätsschicht (Entitätsklasse) und Controller-Schicht (Kontrollschicht, die Daten an die Front-End-Seite zurückgibt).
Das einfache schematische Diagramm von Spring MVC lautet wie folgt:
Sprechen Sie über das Funktionsprinzip von Spring MVC
Prozessbeschreibung:
1. Der Client (Browser) sendet eine Anfrage direkt an das DispatcherServlet.
2.DispatcherServlet ruft HandlerMapping basierend auf den Anforderungsinformationen auf und analysiert den der Anforderung entsprechenden Handler.
3. Analysieren Sie den entsprechenden Handler (den wir normalerweise als Controller bezeichnen).
4.HandlerAdapter ruft den echten Prozessor gemäß dem Handler auf, um die Anforderung zu verarbeiten und die entsprechende Geschäftslogik auszuführen.
5. Nachdem der Prozessor die Verarbeitung des Geschäfts abgeschlossen hat, gibt er ein ModelAndView-Objekt zurück. Model ist das zurückgegebene Datenobjekt und View ist die logische Ansicht.
6. ViewResolver findet die tatsächliche Ansicht basierend auf der logischen Ansicht.
7.DispatcherServlet übergibt das zurückgegebene Modell an View (Ansichtsrendering).
8. Geben Sie die Ansicht an den Anforderer (Browser) zurück.
##Welche Entwurfsmuster werden im Spring-Framework verwendet?
Factory-Designmuster: Spring verwendet das Factory-Muster, um Bean-Objekte über BeanFactory und ApplicationContext zu erstellen.
Proxy-Entwurfsmuster: Implementierung der Spring AOP-Funktionalität.
Singleton-Entwurfsmuster: Beans in Spring sind standardmäßig Singletons.
Template-Methodenmuster: jdbcTemplate, hibernateTemplate und andere Klassen, die in Spring mit Template enden und auf der Datenbank arbeiten, verwenden das Template-Muster.
Wrapper-Entwurfsmuster: Unser Projekt muss eine Verbindung zu mehreren Datenbanken herstellen, und verschiedene Kunden greifen bei jedem Besuch je nach Bedarf auf unterschiedliche Datenbanken zu. Dieses Modell ermöglicht es uns, je nach Kundenwunsch dynamisch zwischen verschiedenen Datenquellen zu wechseln.
Beobachtermuster: Das ereignisgesteuerte Spring-Modell ist eine klassische Anwendung des Beobachtermusters.
Adaptermodus: Die Verbesserung oder Benachrichtigung von Spring AOP (Advice) verwendet den Adaptermodus, und Spring MVC verwendet auch den Adaptermodus, um den Controller anzupassen.
Was ist der Unterschied zwischen @Component und @Bean?
Wirke auf verschiedene Objekte. Die @Component-Annotation wirkt auf Klassen, während die @Bean-Annotation auf Methoden wirkt.
@Component-Annotation wird normalerweise automatisch erkannt und durch Klassenpfad-Scannen automatisch in den Spring-Container eingefügt (wir können die @ComponentScan-Annotation verwenden, um den zu scannenden Pfad zu definieren). Die @Bean-Annotation definiert normalerweise die Bean in der mit der Annotation markierten Methode und teilt Spring mit, dass es sich um eine Instanz einer bestimmten Klasse handelt und an mich zurückgegeben wird, wenn ich sie verwenden muss.
@Bean-Annotation ist anpassbarer als @Component-Annotation, und an vielen Orten können Beans nur über @Bean-Annotation registriert werden. Wenn beispielsweise eine Klasse, die auf eine Bibliothek eines Drittanbieters verweist, in einen Spring-Container zusammengestellt werden muss, kann dies nur über die Annotation @Bean erreicht werden.
Beispiel für die Verwendung der @Bean-Annotation:
@Configurationpublic class AppConfig { @Bean public TransferService transferService() { return new TransferServiceImpl(); }}复制代码
Nach dem Login kopieren
Der obige Code entspricht der folgenden XML-Konfiguration:
Das folgende Beispiel kann nicht durch die @Component-Annotation erreicht werden:
@Beanpublic OneService getService(status) { case (status) { when 1: return new serviceImpl1(); when 2: return new serviceImpl2(); when 3: return new serviceImpl3(); }}复制代码
**ISOLATION_READ_COMMITTED: **Ermöglicht das Lesen von Daten, die durch gleichzeitige Transaktionen übermittelt wurden, wodurch fehlerhafte Lesevorgänge verhindert werden können, es können jedoch weiterhin Phantomlesevorgänge oder nicht wiederholbare Lesevorgänge auftreten
**ISOLATION_REPEATABLE_READ:** Mehrere Leseergebnisse für dasselbe Feld Sie sind alle konsistent, es sei denn, die Daten werden durch die Transaktion selbst geändert. Dies kann schmutzige Lesevorgänge und nicht wiederholbare Lesevorgänge verhindern, es können jedoch weiterhin Phantomlesevorgänge auftreten.
**ISOLATION_SERIALIZABLE: **Die höchste Isolationsstufe, vollständig kompatibel mit der ACID-Isolationsstufe. Alle Transaktionen werden der Reihe nach ausgeführt, sodass keine Möglichkeit einer Interferenz zwischen Transaktionen besteht. Mit anderen Worten: Diese Ebene kann Dirty Reads, nicht wiederholbare Lesevorgänge und Phantom Reads verhindern. Dies wird jedoch die Leistung des Programms erheblich beeinträchtigen. Normalerweise wird diese Ebene nicht verwendet.
Welche Arten von Transaktionsweitergabeverhalten gibt es in Spring-Transaktionen?
Acht Konstanten, die das Transaktionsausbreitungsverhalten darstellen, sind in der TransactionDefinition-Schnittstelle definiert.
Unterstützen Sie die aktuelle Transaktion:
**PROPAGATION_REQUIRED: **Wenn derzeit eine Transaktion vorhanden ist, treten Sie der Transaktion bei. Wenn derzeit keine Transaktion vorhanden ist, erstellen Sie eine neue Transaktion.
PROPAGATION_SUPPORTS: Wenn derzeit eine Transaktion vorhanden ist, treten Sie der Transaktion bei. Wenn derzeit keine Transaktion vorhanden ist, führen Sie die Ausführung auf nicht-transaktionale Weise fort.
PROPAGATION_MANDATORY: Wenn derzeit eine Transaktion vorhanden ist, nehmen Sie an der Transaktion teil. Wenn keine aktuelle Transaktion vorhanden ist, lösen Sie eine Ausnahme aus. (obligatorisch: obligatorisch).
Die aktuelle Transaktion wird nicht unterstützt:
PROPAGATION_REQUIRES_NEW: Erstellen Sie eine neue Transaktion, und wenn derzeit eine Transaktion vorhanden ist, unterbrechen Sie die aktuelle Transaktion.
PROPAGATION_NOT_SUPPORTED: Im nicht-transaktionalen Modus ausführen Wenn derzeit eine Transaktion vorhanden ist, wird die aktuelle Transaktion ausgesetzt.
PROPAGATION_NEVER: Wird im nicht-transaktionalen Modus ausgeführt und löst eine Ausnahme aus, wenn derzeit eine Transaktion vorhanden ist.
###Andere Situationen:
PROPAGATION_NESTED: Wenn derzeit eine Transaktion vorhanden ist, erstellen Sie eine Transaktion, die als verschachtelte Transaktion der aktuellen Transaktion ausgeführt werden soll. Wenn derzeit keine Transaktion vorhanden ist, entspricht der Wert PROPAGATION_REQUIRED.
Ende
Ich hoffe, dass Sie diese Inhalte meistern und mich weiterhin unterstützen können, vielen Dank.
Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)
Das obige ist der detaillierte Inhalt vonsammeln! Was der Frühling meistern muss. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Im Jahr 2023 ist die KI-Technologie zu einem heißen Thema geworden und hat enorme Auswirkungen auf verschiedene Branchen, insbesondere im Programmierbereich. Die Bedeutung der KI-Technologie wird den Menschen zunehmend bewusst, und die Spring-Community bildet da keine Ausnahme. Mit der kontinuierlichen Weiterentwicklung der GenAI-Technologie (General Artificial Intelligence) ist es entscheidend und dringend geworden, die Erstellung von Anwendungen mit KI-Funktionen zu vereinfachen. Vor diesem Hintergrund entstand „SpringAI“ mit dem Ziel, den Prozess der Entwicklung von KI-Funktionsanwendungen zu vereinfachen, ihn einfach und intuitiv zu gestalten und unnötige Komplexität zu vermeiden. Durch „SpringAI“ können Entwickler einfacher Anwendungen mit KI-Funktionen erstellen, wodurch diese einfacher zu verwenden und zu bedienen sind.
Als Branchenführer bietet Spring+AI durch seine leistungsstarke, flexible API und erweiterte Funktionen führende Lösungen für verschiedene Branchen. In diesem Thema werden wir uns mit den Anwendungsbeispielen von Spring+AI in verschiedenen Bereichen befassen. Jeder Fall wird zeigen, wie Spring+AI spezifische Anforderungen erfüllt, Ziele erreicht und diese LESSONSLEARNED auf ein breiteres Anwendungsspektrum ausdehnt. Ich hoffe, dieses Thema kann Sie dazu inspirieren, die unendlichen Möglichkeiten von Spring+AI tiefer zu verstehen und zu nutzen. Das Spring-Framework hat eine mehr als 20-jährige Geschichte im Bereich der Softwareentwicklung, und seit der Veröffentlichung der Spring Boot 1.0-Version sind 10 Jahre vergangen. Nun kann niemand diesen Frühling bestreiten
So implementieren Sie programmgesteuerte Spring-Transaktionen: 1. Verwenden Sie TransactionCallback und TransactionCallbackWithoutResult; 4. Verwenden Sie TransactionTemplate in Kombination mit @Transactional;
Java implementiert geplante Aufgaben In der mit Jdk gelieferten Bibliothek gibt es zwei Möglichkeiten, geplante Aufgaben zu implementieren: eine ist Timer und die andere ist ScheduledThreadPoolExecutor. Wenn Timer+TimerTask einen Timer erstellt, wird ein Thread erstellt, der zum Planen von TimerTask-Aufgaben verwendet werden kann. Der Timer verfügt über vier Konstruktionsmethoden. Sie können den Namen des Timer-Threads angeben und angeben, ob er als Daemon-Thread festgelegt werden soll. Der Standardname ist Timer-Nummer und der Standardname ist kein Daemon-Thread. Es gibt drei Hauptmethoden: cancel(): Aufgabenplanung beenden, alle derzeit geplanten Aufgaben abbrechen, laufende Aufgaben sind davon nicht betroffen. purge(): Aufgaben aus der Aufgabenwarteschlange entfernen
SpringBoot und SpringCloud sind beides Erweiterungen des Spring Framework, die Entwicklern dabei helfen, Microservice-Anwendungen schneller zu erstellen und bereitzustellen. Sie haben jedoch jeweils unterschiedliche Zwecke und Funktionen. SpringBoot ist ein Framework zum schnellen Erstellen von Java-Anwendungen, das es Entwicklern ermöglicht, Spring-basierte Anwendungen schneller zu erstellen und bereitzustellen. Es bietet eine einfache und leicht verständliche Möglichkeit, eigenständige, ausführbare Spring-Anwendungen zu erstellen
Mit der Aktualisierung und Iteration der Technologie begann Java5.0, Anmerkungen zu unterstützen. Als führendes Framework in Java hat Spring seit der Aktualisierung auf Version 2.5 langsam damit begonnen, die XML-Konfiguration aufzugeben, und es werden mehr Annotationen zur Steuerung des Spring-Frameworks verwendet.
So legen Sie die Transaktionsisolationsstufe in Spring fest: 1. Verwenden Sie die Annotation @Transactional. 3. Legen Sie sie in der Spring-Konfigurationsdatei fest. 4. Legen Sie sie in der Java-Konfigurationsklasse fest. Detaillierte Einführung: 1. Verwenden Sie die Annotation @Transactional, fügen Sie die Annotation @Transactional zu der Klasse oder Methode hinzu, die eine Transaktionsverwaltung erfordert, und legen Sie die Isolationsstufe im Attribut fest. 2. In der Spring-Konfigurationsdatei usw.
Als Java-Entwickler ist das Erlernen und Verwenden des Spring-Frameworks eine wesentliche Fähigkeit. Mit der Popularität von Cloud Computing und Microservices ist das Erlernen und Verwenden von Spring Cloud zu einer weiteren Fähigkeit geworden, die beherrscht werden muss. SpringCloud ist ein auf SpringBoot basierendes Entwicklungstoolset zum schnellen Aufbau verteilter Systeme. Es bietet Entwicklern eine Reihe von Komponenten, darunter Dienstregistrierung und -erkennung, Konfigurationscenter, Lastausgleich und Leistungsschalter usw., sodass Entwickler Mikrofunktionen erstellen können