Die neueste Sammlung von JAVA-Interviewfragen (8)

Designmuster

88. Erzählen Sie mir von den Designmustern, mit denen Sie vertraut sind?
Referenz: Encyclopedia of Design Patterns

89. Was ist der Unterschied zwischen einer einfachen Fabrik und einer abstrakten Fabrik?

Einfaches Fabrikmodell:
Dieses Modell selbst ist sehr einfach und wird im Falle eines einfacheren Geschäfts verwendet. Es wird in der Regel für kleine Projekte oder wenn bestimmte Produkte selten erweitert werden (damit die Fabrikklasse nicht häufig geändert werden muss) verwendet.

Es besteht aus drei Rollen:

  • Fabrikrolle: Dies ist der Kern dieses Modells, das bestimmte Geschäftslogiken und Beurteilungslogiken enthält. Entsprechend der unterschiedlichen Logik werden bestimmte Fabrikprodukte hergestellt. Wie die Treiberklasse im Beispiel.

  • Abstrakte Produktrolle: Im Allgemeinen handelt es sich um eine übergeordnete Klasse, die von einem bestimmten Produkt oder einer implementierten Schnittstelle geerbt wird. Realisiert durch Schnittstelle oder abstrakte Klasse. Wie die Car-Schnittstelle im Beispiel.

  • Spezifische Produktrolle: Das von der Factory-Klasse erstellte Objekt ist eine Instanz dieser Rolle. Es wird von einer bestimmten Klasse in Java implementiert, z. B. den Klassen Benz und Bmw im Beispiel.

Verwenden wir ein Klassendiagramm, um die Beziehung zwischen ihnen klar darzustellen: das
Fügen Sie hier eine Bildbeschreibung ein
abstrakte Fabrikmuster:

Lassen Sie uns zunächst verstehen, was eine Produktfamilie ist: eine Produktfamilie, die sich in unterschiedlichen hierarchischen Produktstrukturen befindet und verwandte Funktionen hat.
Fügen Sie hier eine Bildbeschreibung ein
BmwCar und BenzCar in der Abbildung sind zwei Produktbäume (Produkthierarchie), und BenzSportsCar und BmwSportsCar, wie in der Abbildung gezeigt, sind eine Produktfamilie. Sie können alle in die Sportwagenfamilie eingeordnet werden, sodass die Funktionen miteinander verbunden sind. Ebenso sind BmwBussinessCar und BenzBusinessCar eine Produktfamilie.

Man kann sagen, dass der Unterschied zwischen ihm und dem Factory-Methodenmuster in der Komplexität des Objekts liegt, das erstellt werden muss. Und das abstrakte Fabrikmuster ist das abstrakteste und allgemeinste der drei. Der Zweck des abstrakten Factory-Musters besteht darin, dem Kunden eine Schnittstelle zum Erstellen von Produktobjekten in mehreren Produktfamilien bereitzustellen.

Darüber hinaus müssen die folgenden Bedingungen erfüllt sein, um das abstrakte Fabrikmuster zu verwenden:

  1. Das System enthält mehrere Produktfamilien, und das System kann jeweils nur eine Produktfamilie verwenden

  2. Es werden Produkte verwendet, die zur gleichen Produktfamilie gehören.

Werfen wir einen Blick auf die verschiedenen Rollen des abstrakten Fabrikmusters (das gleiche wie bei der Fabrikmethode):

  • Abstrakte Factory-Rolle: Dies ist der Kern des Factory-Methodenmusters. Es hat nichts mit der Anwendung zu tun. Es ist die Schnittstelle, die die spezifische Factory-Rolle implementieren muss, oder die übergeordnete Klasse, die vererbt werden muss. Es wird von abstrakten Klassen oder Schnittstellen in Java implementiert.

  • Spezifische Factory-Rolle: Sie enthält Code, der sich auf eine bestimmte Geschäftslogik bezieht. Wird von der Anwendung aufgerufen, um das entsprechende Objekt des jeweiligen Produkts zu erstellen. In Java wird es von konkreten Klassen implementiert.

  • Abstrakte Produktrolle: Dies ist die übergeordnete Klasse, die vom konkreten Produkt oder der implementierten Schnittstelle geerbt wird. Im Allgemeinen müssen abstrakte Klassen oder Schnittstellen in Java implementiert werden.

  • Bestimmte Produktrolle: Das von einer bestimmten Factory-Rolle erstellte Objekt ist eine Instanz dieser Rolle. Es wird durch konkrete Klassen in Java realisiert.


Feder / Feder MVC

90. Warum Feder verwenden?

1. Einleitung

  • Zweck: Lösen Sie die Komplexität der Entwicklung von Unternehmensanwendungen

  • Funktion: Verwenden Sie JavaBean anstelle von EJB und bieten Sie mehr Funktionen für Unternehmensanwendungen

  • Geltungsbereich: jede Java-Anwendung

Einfach ausgedrückt ist Spring ein leichtes Inversion of Control (IoC) - und aspektorientiertes (AOP) Container-Framework.

2. Leichtgewicht

Der Frühling ist in Bezug auf Größe und Overhead leicht. Das gesamte Spring-Framework kann in einer JAR-Datei mit einer Größe von nur 1 MB veröffentlicht werden. Auch der von Spring geforderte Verarbeitungsaufwand ist vernachlässigbar. Darüber hinaus ist Spring nicht aufdringlich: In der Regel hängen Objekte in Spring-Anwendungen nicht von den spezifischen Klassen von Spring ab.

3. Umkehrung der Kontrolle

Die Feder fördert die lose Kopplung durch eine Technik namens Inversion of Control (IoC). Wenn IoC angewendet wird, werden andere Objekte, von denen ein Objekt abhängt, passiv übergeben, anstatt abhängige Objekte vom Objekt selbst zu erstellen oder zu finden. Sie können sich IoC als das Gegenteil von JNDI vorstellen - es ist nicht so, dass das Objekt Abhängigkeiten vom Container findet, aber der Container übergibt die Abhängigkeiten aktiv an ihn, wenn das Objekt initialisiert wird, ohne auf die Anforderung des Objekts zu warten.

4. Stellen Sie sich dem Aspekt

Spring bietet umfassende Unterstützung für die aspektorientierte Programmierung und ermöglicht eine kohärente Entwicklung durch Trennung von Anwendungsgeschäftslogik und Diensten auf Systemebene (z. B. Prüfung und Transaktionsmanagement). Anwendungsobjekte implementieren nur das, was sie tun sollen - vervollständigen die Geschäftslogik - nichts weiter. Sie sind nicht verantwortlich (oder gar bewusst) für andere Probleme auf Systemebene, wie z. B. Protokollierung oder Transaktionsunterstützung.

5. Behälter

Spring enthält und verwaltet die Konfiguration und den Lebenszyklus von Anwendungsobjekten. In diesem Sinne handelt es sich um einen Container. Sie können konfigurieren, wie jede Bean basierend auf einem konfigurierbaren Prototyp (Prototyp) erstellt wird. Ihre Bean kann eine einzelne Instanz erstellen oder eine generieren jedes Mal, wenn Sie es brauchen, eine neue Instanz - und wie sie miteinander in Beziehung stehen. Spring sollte jedoch nicht mit herkömmlichen schweren EJB-Behältern verwechselt werden. Sie sind häufig sperrig und sperrig und schwer zu verwenden.

6. Rahmen

Spring kann einfache Komponenten konfigurieren und zu komplexen Anwendungen kombinieren. In Spring werden Anwendungsobjekte deklarativ kombiniert, normalerweise in einer XML-Datei. Spring bietet auch viele grundlegende Funktionen (Transaktionsmanagement, Persistenz-Framework-Integration usw.), sodass Sie die Entwicklung der Anwendungslogik überlassen.

-
Diese Funktionen bieten den gesamten Frühling, sodass Sie saubereren, übersichtlicheren und einfacher zu testenden Code schreiben können. Sie bieten auch grundlegende Unterstützung für verschiedene Module im Frühjahr.

91. Erklären Sie, was aop ist.

AOP (aspektorientierte Programmierung, aspektorientierte Programmierung) kann als Ergänzung und Verbesserung von OOP (objektorientierte Programmierung, objektorientierte Programmierung) bezeichnet werden. OOP führt Konzepte wie Kapselung, Vererbung und Polymorphismus ein, um eine Hierarchie von Objekten zu erstellen und eine Sammlung öffentlicher Verhaltensweisen zu simulieren. Wenn wir öffentliche Verhaltensweisen für verstreute Objekte einführen müssen, ist OOP machtlos. Mit anderen Worten, mit OOP können Sie eine Beziehung von oben nach unten definieren, es ist jedoch nicht zum Definieren einer Beziehung von links nach rechts geeignet. Zum Beispiel die Protokollfunktion. Protokollcode wird häufig horizontal auf allen Objektebenen verteilt und hat nichts mit den Kernfunktionen der Objekte zu tun, an die er verteilt wird. Gleiches gilt für andere Codetypen wie Sicherheit, Ausnahmebehandlung und transparente Persistenz. Diese Art von irrelevantem Code, der überall verstreut ist, wird als Querschnittscode bezeichnet. Im OOP-Design führt dies zu vielen Code-Duplikationen, was der Wiederverwendung verschiedener Module nicht förderlich ist.

Die AOP-Technologie ist genau das Gegenteil. Sie verwendet eine Technologie namens "Querschnitt", um das Innere des gekapselten Objekts zu zerlegen und die allgemeinen Verhaltensweisen, die mehrere Klassen betreffen, in einem wiederverwendbaren Modul zusammenzufassen und zu benennen. das heißt, Aspekt. Der sogenannte "Aspekt" besteht einfach darin, die Logik oder Verantwortlichkeiten zu kapseln, die nicht mit dem Geschäft zusammenhängen, sondern von den Geschäftsmodulen aufgerufen werden. Dies ist praktisch, um den sich wiederholenden Code des Systems zu reduzieren und die Kopplung zwischen diesen zu verringern Module und ist förderlich für die zukünftige Entwicklung. Bedienbarkeit und Wartbarkeit. AOP stellt eine horizontale Beziehung dar. Wenn das "Objekt" ein Hohlzylinder ist, der die Eigenschaften und das Verhalten des Objekts zusammenfasst, ist die Methode der aspektorientierten Programmierung wie eine scharfe Kante, um diese Hohlzylinder zu teilen. Öffnen, um die Nachrichten zu erhalten Innerhalb. Der Schnittabschnitt ist der sogenannte "Aspekt". Dann restaurierte es diese Schnittebenen mit genialem Geschick und hinterließ keine Spuren.

Mithilfe der "Cross-Cutting" -Technologie unterteilt AOP das Softwaresystem in zwei Teile: Kernanliegen und Querschnittsthemen. Der Hauptprozess der Geschäftsabwicklung ist das Hauptanliegen, und der weniger relevante Teil ist das Querschnittsthema. Ein Merkmal von Querschnittsthemen ist, dass sie häufig an mehreren Stellen des Kernproblems auftreten und im Grunde überall ähnlich sind. Wie Autoritätsauthentifizierung, Protokoll, Transaktionsverarbeitung. Die Rolle von Aop besteht darin, die verschiedenen Anliegen im System zu trennen und die Kernanliegen von den Querschnittsthemen zu trennen. Wie Adam Magee, Senior Solution Architect von Avanade, sagte, besteht die Kernidee von AOP darin, "die Geschäftslogik in der Anwendung von den allgemeinen Diensten zu trennen, die sie unterstützen."

92. Erklären Sie, was ioc ist.

IOC ist die Abkürzung für Inversion of Control, und die meisten Bücher werden in "Inversion of Control" übersetzt.

1996 schlug Michael Mattson das Konzept des IOC erstmals in einem Artikel über die Diskussion objektorientierter Frameworks vor. Für die Grundideen des objektorientierten Entwurfs und der Programmierung haben wir bereits viel gesprochen und werden sie nicht wiederholen. In einfachen Worten ist es, ein komplexes System in miteinander kooperierende Objekte zu zerlegen. Nachdem diese Objektklassen eingekapselt sind, wird die Die interne Implementierung ist nach außen transparent. Dadurch wird die Komplexität der Problemlösung verringert und sie kann flexibel wiederverwendet und erweitert werden.

Der Standpunkt der IOC-Theorie lautet ungefähr wie folgt: Die Entkopplung zwischen abhängigen Objekten wird durch einen "Dritten" erreicht. Wie in der folgenden Abbildung gezeigt: Wie
Fügen Sie hier eine Bildbeschreibung ein
Sie sehen können, haben die vier Objekte von A, B, C und D aufgrund der Einführung des "Dritten" in der mittleren Position, dh des IOC-Containers, keine Kopplungsbeziehung Die Übertragung zwischen den Zahnrädern hängt alle vom "Dritten" ab. "Drei Parteien", die Kontrolle über alle Objekte wird an den IOC-Container "Dritter" übergeben. Daher ist der IOC-Container zum Schlüsselkern des gesamten Systems geworden Die Objekte werden zusammengeklebt, um eine Rolle zu spielen. Wenn es keinen solchen "Klebstoff" gibt, verlieren das Objekt und das Objekt den Kontakt miteinander. Aus diesem Grund vergleichen einige Leute den IOC-Behälter mit dem "Klebstoff".

Lassen Sie uns ein weiteres Experiment durchführen: Entfernen Sie den IOC-Container in der Mitte des obigen Bildes und sehen Sie sich dann dieses System an:
Fügen Sie hier eine Bildbeschreibung ein
Das Bild, das wir jetzt sehen, enthält den gesamten Inhalt, den wir zur Realisierung des gesamten Systems benötigen. Zu diesem Zeitpunkt sind die vier Objekte von A, B, C und D nicht mehr gekoppelt und haben keine Verbindung miteinander. In diesem Fall müssen Sie bei der Implementierung von A nicht an B, C, denken. und D mehr. Die Abhängigkeiten zwischen Objekten wurden auf ein Minimum reduziert. Wenn der IOC-Container implementiert werden kann, ist dies eine wunderbare Sache für die Systementwicklung. Jedes Mitglied, das an der Entwicklung teilnimmt, muss nur seine eigene Klasse implementieren und hat nichts mit anderen zu tun!

Lassen Sie uns noch einmal einen Blick darauf werfen, warum Inversion of Control (IOC) einen solchen Namen hat. Lass uns vergleichen:

Bevor das Softwaresystem den IOC-Container einführt, wie in Abbildung 1 dargestellt, hängt Objekt A von Objekt B ab. Wenn Objekt A initialisiert wird oder bis zu einem bestimmten Punkt ausgeführt wird, muss es Objekt B aktiv erstellen oder das erstellte Objekt B verwenden. Unabhängig davon, ob Sie Objekt B erstellen oder verwenden, haben Sie die Kontrolle darüber.

Nachdem das Softwaresystem den IOC-Container eingeführt hat, hat sich diese Situation vollständig geändert. Wie in Abbildung 3 dargestellt, geht aufgrund des Hinzufügens des IOC-Containers die direkte Verbindung zwischen Objekt A und Objekt B verloren Objekt B Zu diesem Zeitpunkt erstellt der IOC-Container aktiv ein Objekt B und injiziert es an der Stelle, an der das Objekt A es benötigt.

Durch den Vergleich vorher und nachher ist es nicht schwer zu erkennen: Der Prozess, bei dem Objekt A das abhängige Objekt B erhält, hat sich von aktivem zu passivem Verhalten geändert, und das Kontrollrecht ist umgekehrt. Dies ist der Ursprung des Namens "Inversion von" Steuerung".

93. Was sind die Hauptmodule des Frühlings?

Das Spring Framework hat bisher mehr als 20 Module integriert. Diese Module sind hauptsächlich in den Kerncontainer, Datenzugriff / -integration, Web, AOP (Aspect Oriented Programming), Tools, Nachrichten und Testmodule unterteilt, wie in der folgenden Abbildung dargestellt.
Fügen Sie hier eine Bildbeschreibung ein
94. Was sind die üblicherweise verwendeten Einspritzmethoden für die Feder?

Spring implementiert IOC (Inversion of Control) durch DI (Dependency Injection). Es gibt hauptsächlich drei häufig verwendete Injektionsmethoden:

  • Konstruktorinjektion

  • Setterinjektion

  • Annotationsbasierte Injektion

95. Sind Bohnen im Frühjahr fadensicher?

Unabhängig davon, ob die Bean im Spring-Container threadsicher ist oder nicht, bietet der Container selbst keine Thread-Sicherheitsstrategie für die Bean. Daher kann gesagt werden, dass die Bean im Spring-Container keine thread-sicheren Funktionen aufweist. Der spezifische Umfang der Bohne sollte jedoch untersucht werden.

96. Welchen Umfang an Bohnen unterstützt der Frühling?

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 fünf Bereiche:

  • Singleton: Im Singleton-Modus wird im gesamten Spring IoC-Container nur eine Instanz der Bean mit Singleton definiert

  • Prototyp: Prototyp-Modus Jedes Mal, wenn die vom Prototyp definierte Bean über die getBean-Methode des Containers abgerufen wird, wird eine neue Bean-Instanz generiert

  • Anfrage: Für jede HTTP-Anfrage generiert eine durch Anfrage definierte Bean eine neue Instanz, dh für jede HTTP-Anfrage wird eine andere Bean-Instanz generiert. Dieser Bereich ist nur gültig, wenn Spring in einer Webanwendung verwendet wird

  • Sitzung: Für jede HTTP-
    Sitzung wird eine neue Instanz mit der in der Sitzung definierten Bohnenmilch generiert. Der gleiche Bereich gilt nur, wenn Spring in einer Webanwendung verwendet wird

  • Globalsession: Für jede globale HTTP-
    Sitzung wird eine neue Instanz mithilfe der von der Sitzung definierten Bean generiert. Normalerweise funktioniert es nur, wenn der Portlet-
    Kontext verwendet wird. Der gleiche Bereich gilt nur, wenn Spring in einer Webanwendung verwendet wird

Unter diesen werden die beiden Bereiche Singleton und Prototyp häufiger verwendet. Bei einer Bean mit Singleton-Gültigkeitsbereich erhalten Sie jedes Mal, wenn Sie die Bean anfordern, dieselbe Instanz. Der Container ist für die Verfolgung des Status der Bean-Instanz verantwortlich und für die Aufrechterhaltung des Lebenszyklusverhaltens der Bean-Instanz. Wenn eine Bean auf den Prototypbereich festgelegt ist, wird Spring jedes Mal, wenn das Programm die Bean mit dieser ID anfordert, dies tun Erstellen Sie eine neue Bean-Instanz und geben Sie sie an das Programm zurück. In diesem Fall verwendet der Spring-Container nur das neue Schlüsselwort, um eine Bean-Instanz zu erstellen. Nach erfolgreicher Erstellung verfolgt der Container weder die Instanz noch behält er den Status der Bean-Instanz bei.

Wenn Sie den Bereich der Bean nicht angeben, verwendet Spring standardmäßig den Singleton-Bereich. Wenn Java eine Java-Instanz erstellt, muss Speicher beantragt werden. Wenn die Instanz zerstört wird, muss die Speicherbereinigung abgeschlossen werden. Diese Aufgaben führen alle zu einer Erhöhung des Systemaufwands. Daher ist die Erstellung und Zerstörung von Prototyp-Scope-Beans relativ teuer. Sobald eine Bean-Instanz mit Singleton-Gültigkeitsbereich erfolgreich erstellt wurde, kann sie wiederverwendet werden. Versuchen Sie daher, die Bean nicht auf den Prototypbereich festzulegen, sofern dies nicht erforderlich ist.

97. Wie können Bohnen im Frühjahr automatisch zusammengestellt werden?

Der Spring-Container ist dafür verantwortlich, Beans in der Anwendung zu erstellen und gleichzeitig die Beziehung zwischen diesen Objekten über die ID zu koordinieren. Als Entwickler müssen wir Spring mitteilen, welche Beans erstellt und wie sie zusammengesetzt werden sollen.

Im Frühjahr gibt es zwei Möglichkeiten der Bohnenmontage:

  • Impliziter Bean-Erkennungsmechanismus und automatische Assemblierung

  • Anzeige der Konfiguration in Java-Code oder XML

Natürlich können diese Methoden auch zusammen verwendet werden.

98. Was sind die Implementierungsmethoden für Frühjahrstransaktionen?

  1. Programmatisches Transaktionsmanagement ist die einzige Option für POJO-basierte Anwendungen. Wir müssen beginTransaction (), commit (), rollback () und andere transaktionsverwaltungsbezogene Methoden im Code aufrufen. Dies ist die programmatische Transaktionsverwaltung.

  2. Deklaratives Transaktionsmanagement basierend auf TransactionProxyFactoryBean

  3. Deklaratives Transaktionsmanagement basierend auf @Transactional

  4. Konfigurieren Sie Transaktionen basierend auf Aspectj AOP

99. Erzählen Sie mir von Spring's Transaktionsisolation?

Die Transaktionsisolationsstufe bezieht sich auf den Isolationsgrad zwischen der Änderung von Daten durch eine Transaktion und einer anderen parallelen Transaktion. Wenn mehrere Transaktionen gleichzeitig auf dieselben Daten zugreifen und der erforderliche Isolationsmechanismus nicht angewendet wird, können die folgenden Probleme auftreten:

  • Dirty Read: Eine Transaktion liest die nicht festgeschriebenen Aktualisierungsdaten einer anderen Transaktion.

  • Phantom Read: Beispielsweise ändert die erste Transaktion die Daten in einer Tabelle. Diese Änderung umfasst beispielsweise "alle Datenzeilen" in der Tabelle. Gleichzeitig ändert die zweite Transaktion auch die Daten in dieser Tabelle. Durch diese Änderung wird "eine neue Datenzeile" in die Tabelle eingefügt. Dann wird der Benutzer, der die erste Transaktion in der Zukunft ausführt, feststellen, dass die Tabelle immer noch unveränderte Datenzeilen enthält, als ob eine Illusion aufgetreten wäre.

  • Nicht wiederholbares Lesen: Beispielsweise werden zwei identische select-Anweisungen nacheinander in derselben Transaktion ausgeführt. Während dieser Transaktion wurde keine DDL-Anweisung ausgeführt, aber die nacheinander erhaltenen Ergebnisse sind inkonsistent, was nicht wiederholbares Lesen ist.

100. Erzählen Sie mir von dem laufenden Prozess von Spring MVC?

Flussdiagramm des Feder-MVC-Betriebs:
Fügen Sie hier eine Bildbeschreibung ein
Beschreibung des Federbetriebsprozesses:

  1. Der Benutzer sendet eine Anforderung an den Server, und die Anforderung wird vom Spring Front-End-Steuerelement Servelt DispatcherServlet erfasst.

  2. DispatcherServlet analysiert die Anforderungs-URL, um die angeforderte Ressourcen-ID (URI) zu erhalten. Rufen Sie dann gemäß URI HandlerMapping auf, um alle zugehörigen Objekte (einschließlich des Handler-Objekts und des dem Handler-Objekt entsprechenden Interceptors) der Handler-Konfiguration abzurufen und schließlich in Form eines HandlerExecutionChain-Objekts zurückzugeben.

  3. DispatcherServlet wählt einen geeigneten HandlerAdapter gemäß dem erhaltenen Handler aus; (Hinweis: Wenn der HandlerAdapter erfolgreich erhalten wurde, wird zu diesem Zeitpunkt die preHandler (...) -Methode des Interceptors ausgeführt.)

  4. Extrahieren Sie die Modelldaten in der Anforderung, geben Sie die Eingabeparameter des Handlers ein und starten Sie die Ausführung des Handlers (Controllers).
    Während Sie die Handler-Eingabeparameter entsprechend Ihrer Konfiguration ausfüllen, hilft Ihnen Spring dabei, zusätzliche Arbeit zu leisten:

    一、HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
    
    二、数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
    
    三、数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
    
    四、数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中
    
  5. Nachdem der Handler ausgeführt wurde, gibt er ein ModelAndView-Objekt an DispatcherServlet zurück.

  6. Wählen Sie gemäß dem zurückgegebenen ModelAndView einen geeigneten ViewResolver aus (muss ein im Spring-Container registrierter ViewResolver sein) und senden Sie ihn an DispatcherServlet zurück.

  7. ViewResolver kombiniert Modell und Ansicht, um die Ansicht zu rendern.

  8. Geben Sie das Rendering-Ergebnis an den Client zurück

101. Was sind die Komponenten von Spring MVC?

Die Kernkomponenten von Spring MVC:

  • DispatcherServlet: Der zentrale Controller, der die Anforderung an eine bestimmte Steuerungsklasse weiterleitet

  • Controller: Der Controller, der die Anforderung speziell verarbeitet

  • HandlerMapping: Mapping-Prozessor, der für das Mapping der Mapping-Strategie verantwortlich ist, wenn der Zentralprozessor an die Steuerung weitergeleitet wird

  • ModelAndView: Die Paketklasse der Daten, die von der Service-Schicht und der Ansichtsschicht zurückgegeben werden

  • ViewResolver: Ansichtsauflöser, bestimmte Ansichten auflösen

  • Interceptors: Interceptors, die für das Abfangen der von uns definierten Anforderungen und die anschließende Verarbeitung verantwortlich sind

102. Welche Rolle spielt @RequestMapping?

RequestMapping ist eine Anmerkung zur Verarbeitung der Anforderungsadressenzuordnung, die für Klassen oder Methoden verwendet werden kann. Wird für Klassen verwendet, bedeutet dies, dass alle Methoden in der Klasse, die auf Anforderungen antworten, diese Adresse als übergeordneten Pfad verwenden.

Die Annotation RequestMapping hat sechs Attribute. Im Folgenden werden sie zur Beschreibung in drei Kategorien unterteilt.

Wert , Methode :

  • Wert: Geben Sie die tatsächliche Adresse der Anforderung an. Die angegebene Adresse kann sich im URI-Vorlagenmodus befinden (wird später beschrieben).

  • Methode: Geben Sie den Methodentyp der Anforderung an: GET, POST, PUT, DELETE usw.;

verbraucht , produziert :

  • verbraucht: Geben Sie den Inhaltstyp (Inhaltstyp) für die Verarbeitung der Anforderung an, z. B. application / json, text / html;

  • Erzeugt: Gibt den zurückgegebenen Inhaltstyp an und gibt nur zurück, wenn der Typ (Akzeptieren) im Anforderungsheader den angegebenen Typ enthält.

params , headers :

  • params: Gibt an, dass bestimmte Parameterwerte in die Anforderung aufgenommen werden müssen, bevor die Methode verarbeitet wird.

  • Header: Die angegebene Anforderung muss bestimmte angegebene Headerwerte enthalten, damit die Methode die Anforderung verarbeiten kann.

103. Welche Rolle spielt @Autowired?

"@Autowired Usage Details": @Autowired Usage

Ich denke du magst

Origin blog.csdn.net/weixin_42120561/article/details/114931845
Empfohlen
Rangfolge