Heim  >  Artikel  >  Java  >  Welche zwei Methoden gibt es für die Springboot-Hot-Bereitstellung?

Welche zwei Methoden gibt es für die Springboot-Hot-Bereitstellung?

王林
王林nach vorne
2023-06-03 11:51:27729Durchsuche

Der Unterschied zwischen Springboot und SpringMVC

Spring Boot verfügt über eingebettete Tomcat-, Jetty- und Undertow-Container, die ohne weitere Bereitstellung direkt ausgeführt werden können.

Spring Boot wird automatisch konfiguriert, wodurch eine große Anzahl von XML-Dateikonfigurationen reduziert wird Projektaufbau Die Komplexität

Spring MVC ist ein auf Servlet basierendes MVC-Framework. Es löst hauptsächlich die Probleme der WEB-Entwicklung, da die Konfiguration von Spring sehr komplex ist und verschiedene XML-, JavaConfig- und Hin-Elemente umständlich zu verarbeiten sind. Um die Verwendung für Entwickler zu vereinfachen, wurde daher Spring Boot Convention überlegen, was den Spring-Konfigurationsprozess vereinfacht.

Spring ist eine „Engine“;

Spring MVC ist ein MVC-Framework, das auf Spring basiert;

Spring Boot ist eine Reihe von schnellen Entwicklungsintegrationspaketen, die auf der bedingten Registrierung von Spring4 basieren.

Zwei Möglichkeiten der Springboot-Hot-Bereitstellung

Die Hot-Bereitstellung von SpringBoot Devtools ist erst nach SpringBoot 1.3 verfügbar

①: spring-boot-devtools ②: Spring Loaded

Methode 1:

Abhängigkeiten in der POM-Datei des Projekts hinzufügen:

 <!--热部署jar-->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 </dependency>

Dann: Verwenden Sie Umschalt+Strg+Alt+"/" (Tastenkombination in IDEA), um „Registrierung“ auszuwählen und überprüfen Sie dann „compiler.automake.allow.when.app.running“

Methode 2:

Im Projekt hinzufügen den folgenden Code

 <build>
 <plugins>
  <plugin>
  <!-- springBoot编译插件-->
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <dependencies>
   <!-- spring热部署 -->
   <!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 -->
   <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>springloaded</artifactId>
   <version>1.2.6.RELEASE</version>
   </dependency>
  </dependencies>
  </plugin>
 </plugins>
 </build>

Nachdem Sie ihn hinzugefügt haben, müssen Sie zum Ausführen den Befehl mvn verwenden:

Suchen Sie zuerst die Konfigurationen bearbeiten in IDEA und gehen Sie dann wie folgt vor: (Klicken Sie auf das „+“ in der oberen linken Ecke und dann Wählen Sie Maven aus. Das rechte Feld erscheint in Rot. Geben Sie den Befehl wie in der Abbildung gezeigt in den unterstrichenen Bereich ein.

Klicken Sie auf „Speichern“ und er wird im IDEA-Projektlaufbereich angezeigt . Klicken Sie auf den grünen Pfeil, um die

Springboot-Konfigurationsdatei

Spring Boot verwendet eine globale Konfigurationsdatei: hauptsächlich die folgenden zwei Typen:

application.properties: Beispiel: server.port=9998

application.yml (YAML): Beispiel: Server:

       Port: 8080

Die Hauptfunktion der Konfigurationsdatei besteht darin, die zugrunde liegende Standardkonfiguration von Spring Boot zu ändern.

Kernanmerkungen von Spring Boot.

Die Anmerkung zur Startup-Klasse ist @SpringBootApplication, die auch die Kernannotation von Spring Boot ist. Die Hauptkombinationen umfassen die folgenden 3 Annotationen:

@SpringBootConfiguration: Kombiniert die Annotation @Configuration, um die Funktion der Konfigurationsdatei zu implementieren.

@EnableAutoConfiguration: Aktivieren Sie die automatische Konfigurationsfunktion oder deaktivieren Sie eine bestimmte automatische Konfigurationsoption, z. B. das Deaktivieren der automatischen Konfigurationsfunktion der Datenquelle: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }).

@ComponentScan: Scannen von Federkomponenten.

Das Ausführungsprinzip des Spring Boot-Starters

Für die Verwendung des Starters sind nur zwei Bedingungen erforderlich: Maven-Abhängigkeiten und Konfigurationsdateien. Hier finden Sie eine kurze Einführung in den Prozess der automatisierten Konfiguration mit dem Starter.
Die Einführung von Maven bedeutet im Wesentlichen, dass beim Start von Spring-Boot die Datei resources/META-INF/spring.factories im Starter-JAR-Paket gefunden wird die Klassen, die automatisch konfiguriert werden müssen

Der Unterschied zwischen Spring Boot und Spring MVC

  1. Spring Boot ist die Integration von Spring und Spring MVC, während Spring MVC nur ein Modul von Spring ist, einem leichten Web-Layer-Framework

  2. Spring Boot kann fast eine Nullkonfiguration erreichen, alle Funktionen werden mithilfe von Anmerkungen entwickelt und die Idee der „Konvention über Konfiguration“ wird verwendet, um die Projektentwicklung zu vereinfachen

  3. Schwierigkeit, während Spring MVC auf XML angewiesen sein muss Konfiguration für die Entwicklung

  4. Spring Boot wird mit integriertem Tomcat geliefert und kann direkt nach dem Packen in ein JAR-Paket ausgeführt werden, oder Sie können einen externen Tomcat verwenden.

  5. Spring Boot erbt auch viele Bibliothekskonfigurationen von Drittanbietern B. JDBC, Mongo, Redis usw. Durch die Anwendung dieser Bibliotheken von Drittanbietern ist eine Konfiguration nahezu Null möglich Eureka-Client

Eureka-Server bietet Dienstregistrierungsdienst

Nachdem jeder Knoten gestartet wurde, wird er in EurekaServer registriert, sodass die Dienstregistrierung in EurekaServer die Informationen aller verfügbaren Dienstknoten speichern kann In der Benutzeroberfläche ist EurekaClient ein Java-Client, der zur Vereinfachung der Interaktion verwendet wird. Der Client verfügt außerdem über einen integrierten Load Balancer, der einen Round-Robin-Ladealgorithmus verwendet. Nach dem Start der Anwendung wird ein Heartbeat an den Eureka-Server gesendet (der Standardzeitraum beträgt 30 Sekunden). Wenn Eureka Server den Heartbeat eines Knotens nicht innerhalb mehrerer Heartbeat-Zyklen empfängt, entfernt EurekaServer den Serviceknoten aus der Serviceregistrierung (Standard 90 Sekunden).


Eurekas drei Hauptrollen:


Eureka Server bietet Serviceregistrierung und -erkennung


Dienstanbieter Der Dienstanbieter registriert seinen Dienst bei Eureka, damit der Dienstkonsument ihn finden kann

Als Service-Registrierungszentrum sind die Vorteile von Eureka und Zookeeper:

Die berühmte CAP-Theorie besagt, dass es für ein verteiltes System unmöglich ist, C (Konsistenz), A (Verfügbarkeit) und P (Partitionsfehlertoleranz) zu erfüllen ) gleichzeitig. Da in einem verteilten System die Partitionsfehlertoleranz P gewährleistet sein muss, können wir nur einen Kompromiss zwischen A und C eingehen.

So

  • zookeeper garantiert cp,

  • eureka ist der Unterschied zwischen # und $ in mybatis

# entspricht dem Hinzufügen von Doppelzitaten zu den Daten, $ äquivalent zu Daten direkt anzeigen

Die übergebenen Daten werden als Zeichenfolge behandelt und in doppelte Anführungszeichen gesetzt. Beispiel: order by #user_id#, wenn der übergebene Wert 111 ist, dann ist der in SQL analysierte Wert order by „111“.

    $ zeigt die eingehenden Daten direkt an und generiert sie in SQL. Beispiel: order by $user_id$, wenn der übergebene Wert 111 ist, dann ist der Wert beim Parsen in sql „order by user_id$“. Wenn der übergebene Wert „id“ ist, ist der analysierte Wert „order by id“. 3# kann SQL-Injection weitgehend verhindern. Die
  • $-Methode kann die SQL-Injektion nicht verhindern. Die Methode
  • $ wird im Allgemeinen zum Übergeben von Datenbankobjekten wie Tabellennamen verwendet.
  • Wenn Sie # verwenden können, verwenden Sie im Allgemeinen nicht $.
  • Bei der Verwendung müssen Sie vorsichtig sein Sortieren Sie beim Sortieren von MyBatis nach dynamischen Parametern. Ersetzen Sie
  • durch $ anstelle von #
  • . Standardmäßig führt die Verwendung der Formatsyntax #{} dazu, dass MyBatis eine vorbereitete Anweisungseigenschaft erstellt und einen sicheren Wert (z. B. ?) dagegen festlegt Es. Das ist sicher, schnell und wird bevorzugt, manchmal möchte man einfach eine unveränderte Zeichenfolge direkt in die SQL-Anweisung einfügen. Sie können es beispielsweise wie ORDER BY wie folgt verwenden:

    ORDER BY ${columnName}

Hier wird MyBatis die Zeichenfolge weder ändern noch maskieren. So eliminiert Redis Daten ttl: Wählen Sie die abzulaufenden Daten aus dem Datensatz (server.db[i].expires) aus, der die Ablaufzeit festgelegt hat, und entfernen Sie sie.


volatile-random: Wählen Sie den Datensatz aus, der die Ablaufzeit hat (server .db[i].expires) ) Zu entfernende Daten nach dem Zufallsprinzip auswählen



allkeys-lru: Wählen Sie die zuletzt verwendeten Daten aus dem Datensatz (server.db[i].dict) aus, um

allkeys- zu entfernen random: Aus dem Datensatz auswählen (server.db) [i].dict) Daten zur Eliminierung zufällig auswählen

    No-Envivtion (Räumung): Räumung von Daten verbieten
  1. LRU-Mechanismus:

  2. Redis speichert den LRU-Zähler server.lrulock, der regelmäßig entfernt wird. Aktualisieren (Redis-Timer-Programm severCorn()), jedes Redis-Objekt legt den entsprechenden LRU-Wert fest und Redis aktualisiert redisObject.lru jedes Mal, wenn auf das Objekt zugegriffen wird.

  3. LRU-Eliminierungsmechanismus: Wählen Sie zufällig mehrere Schlüssel-Wert-Paare im Datensatz aus und entfernen Sie das Schlüssel-Wert-Paar mit dem größten LRU zur Eliminierung. Daher garantiert Redis nicht, dass die gelöschten Daten die am längsten verwendeten sind, sondern dass es sich um zufällig ausgewählte Schlüssel-Wert-Paare handelt.
  4. TTL-Mechanismus:
  5. Der Ablaufplan für Schlüssel-Wert-Paare wird in der Redis-Datensatzstruktur gespeichert, d. h. redisDb.expires.

  6. TTL-Eliminierungsmechanismus: Wählen Sie zufällig mehrere Schlüssel-Wert-Paare im Datensatz aus und entfernen Sie die Schlüssel-Wert-Paare, die der Ablaufzeit am nächsten liegen, zur Eliminierung. Daher garantiert Redis nicht, dass die gelöschten Daten der Ablaufzeit am nächsten kommen, sondern die zufällig ausgewählten Schlüssel-Wert-Paare.

    Redis erkennt, ob zu viel Speicher verwendet wird, wenn jeder Service-Client einen Befehl ausführt

Das obige ist der detaillierte Inhalt vonWelche zwei Methoden gibt es für die Springboot-Hot-Bereitstellung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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