Vorbereitung auf die Spring Professional-Zertifizierung. Frühlingsstiefel

Grüße an alle. Dieser Artikel behandelt wichtige Fragen zum Thema "Spring Boot". Es richtet sich an Anfänger und kann bei der Vorbereitung eines Interviews hilfreich sein. Es stellte sich im Vergleich zu anderen Artikeln als recht kompakt heraus.


Inhaltsverzeichnis
  1. Abhängigkeitsinjektion, Container, IoC, Bohnen
  2. AOP (aspektorientierte Programmierung)
  3. JDBC, Transaktionen, JPA, Federdaten
  4. Frühlingsstiefel
  5. Frühling mvc
  6. Frühlingssicherheit
  7. RUHE
  8. Testen




Fragen


Was ist ein Frühlingsstiefel?

Spring Boot ist eine Reihe vorkonfigurierter Module, die im Spring Framework funktionieren und die Konfiguration einer Spring-Anwendung vereinfachen.


Hier einige zentrale Module:


  • Spring-Boot-Abhängigkeiten. Enthält Versionsabhängigkeiten.
  • Spring-Boot-Starter-Elternteil. Übergeordnete pom.xml
  • Spring-Boot-Starter. Übergeordnetes Modul für den Anfang
  • Spring-Boot-Autokonfiguration. Enthält Module für Starter mit automatischer Abstimmung
  • Feder-Boot-Aktuator. Ermöglicht die Überwachung der Anwendung und die Verwaltung ihrer Erstellung

Was sind die Vorteile von Spring Boot?
  • Konfigurieren Sie viele Einstellungen automatisch, um Boilerplate-Code zu vermeiden
  • Ermöglicht die einfache Konfiguration der Anwendung, wenn die Standardeinstellungen nicht passen
  • Das Spring Boot-Projekt kann in eine eigenständige JAR-Datei kompiliert werden
  • Bietet eine Reihe von Abhängigkeiten, die bereits getestet wurden, um ordnungsgemäß miteinander zu arbeiten
  • Es verfügt über integrierte Webcontainer, mit denen die Anwendung einfach getestet werden kann.

Wie arbeitet er? Wie versteht er was und wie zu konfigurieren?

Basierend auf den Abhängigkeiten im Klassenpfad wird davon ausgegangen, was Sie benötigen. "Vereinbarung über Konfiguration" - Spring wird automatisch mit speziell ausgewählten Einstellungen konfiguriert, die dann überschrieben werden können.


@ConditionalOnClass gibt es mehrere Anmerkungen: @ConditionalOnClass , @ConditionalOnBean , @ConditionalOnMissingBean und @ConditionalOnMissingClass , mit denen Sie Bedingungen auf @ Configuration-Klassen und @ Bean-Methoden in diesen Klassen anwenden können.


Zum Beispiel:


  • Eine Bean wird nur erstellt, wenn sich eine bestimmte Abhängigkeit im Klassenpfad befindet.


    Verwenden Sie @ConditionalOnClass und @ConditionalOnClass den Klassennamen aus dem Klassenpfad fest.


  • Eine Bean wird nur erstellt, wenn sich keine Bean dieses Typs oder mit diesem Namen im Container befindet.


    Verwenden Sie @ConditionalOnMissingBean und @ConditionalOnMissingBean den Namen oder den Typ der Bean fest, die dort überprüft werden soll.



Was beeinflusst die Konfiguration von Spring Boot?

Es gibt eine Liste von Bedingungsanmerkungen, von denen jede zur Erstellung von Beans verwendet wird. Hier ist eine Liste solcher Anmerkungen (tatsächlich gibt es mehr):


Anmerkung
Bedingung für das Bestehen
@ConditionalOnClass
Klassenpräsenz im Klassenpfad
@ConditionalOnMissingClass
Fehlende Klasse im Klassenpfad
@ConditionalOnBean
Das Vorhandensein eines Behälters oder seines Typs (Bean-Klasse)
@ConditionalOnMissingBean
Fehlen eines Behälters oder seines Typs
@ConditionalOnProperty
Vorhandensein von Spring Property
@ConditionalOnResource
Das Vorhandensein einer Ressourcendatei
@ConditionalOnWebApplication
Wenn es sich um eine Webanwendung handelt, wird WebApplicationContext verwendet.
@ConditionalOnNotWebApplication
Wenn es sich nicht um eine Webanwendung handelt

Wie sind Eigenschaften definiert? Wo befindet sich die Standard-PropertySource in Spring Boot?

Spring Boot verwendet eine spezielle Reihenfolge von PropertySource, um das Überschreiben von Eigenschaftswerten zu ermöglichen. Hier ist die Reihenfolge der Quellen zum Abrufen von Anwendungseigenschaften:


  1. Allgemeine Einstellungen aus dem Verzeichnis ~ / spring-boot devtools.properties
  2. Einstellungen aus der @TestPropertySource Annotation aus Tests
  3. Attribute @ SpringBootTest # -Eigenschaften
  4. Befehlszeilenargumente
  5. Eigenschaften von SPRING_APPLICATION_JSON
  6. Parameter zum Initialisieren von ServletConfig
  7. Parameter zum Initialisieren von ServletContext
  8. JNDI-Attribute aus Java: comp / env
  9. Java-Systemeigenschaften (System.getProperties ())
  10. Betriebssystemvariablen
  11. RandomValueProperySource
  12. Eigenschaften für Profile, z. B. YAML oder application- {profile} .properties
  13. application.properties und yaml nicht aus Ihrem Glas
  14. application.properties und yaml aus Ihrem Glas
  15. @ @PropertySource für die @ Configuration-Klasse
  16. Eigenschaft standardmäßig (festgelegt über SpringApplication.setDefaultProperties() )

Fügen Sie außerdem hinzu, dass property.yml immer property.properties überschreibt.


Beschreiben der wichtigsten Anmerkungen und Konfigurationen für Spring Boot?

Die @SpringBootApplication bietet drei Eigenschaften:


  • @EnableAutoConfiguration - @EnableAutoConfiguration den automatischen Konfigurationsmechanismus von Spring Boot
  • @ComponentScan - @ComponentScan das Scannen von Komponenten im Paket der Klasse, in der es sich befindet
  • @Configuration - Ermöglicht die zusätzliche Registrierung. Bohnen im Kontext

Hier sind andere wichtige Anmerkungen:


@EnableConfigurationProperties - Ermöglicht die Verwendung von @ConfigurationProperties mit der Annotation @ConfigurationProperties


@ConfigurationProperties - Ermöglicht das @ConfigurationProperties Dateien aus Dateien zu Bins


@WebMvcTest - wird für Spring MVC-Tests verwendet


@SpringBootTest - wird verwendet, wenn Sie Spring Boot-Funktionen in Tests benötigen


@DataJpaTest - wird zum Testen von JPA-Komponenten verwendet


Was sind die Unterschiede zwischen einem Inline-Container und einem WAR?

Der eingebettete Container ist der Server, der mit der endgültigen Anwendung geliefert wird, während WAR ein Archiv ist, das auf einem externen Server bereitgestellt werden kann.


Servlet-Container eignen sich gut zum Verwalten mehrerer Anwendungen auf demselben Host, sind jedoch nicht sehr nützlich zum Verwalten nur einer Anwendung.


In einer Cloud-Umgebung ist die Verwendung einer Anwendung pro virtueller Maschine der bevorzugte und häufigere Weg. Moderne Frameworks möchten besser mit den Clouds kompatibel sein und wechseln daher zu eingebetteten Containern.


Welche eingebauten Container unterstützt Spring?

Spring Boot unterstützt Tomcat, Jetty und Undertow.
Der Standardwert ist TomCat. Um den Container zu ändern, fügen Sie einfach die gewünschte Abhängigkeit in pom.xml hinzu.


Was macht @EnableAutoConfiguration?

Sie können die automatische Konfiguration verwenden. Die automatische Konfiguration in Spring Boot versucht, Beans basierend auf Abhängigkeiten im Klassenpfad zu erstellen und zu konfigurieren, damit der Entwickler schnell mit verschiedenen Technologien arbeiten und den Boilerplate-Code entfernen kann.


Scannt Spring Boot Komponenten? Wo sucht er sie standardmäßig?

Ja, wenn eine Annotation @SpringBootApplication vorhanden ist, die eine Annotation @SpringBootApplication enthält.


Standardmäßig sucht Spring nach Beans im selben Paket wie die mit Anmerkungen versehene Klasse. Dies kann durch Angabe von Klassen (oder Paketen) in den scanBasePackage scanBasePackageClasses oder scanBasePackage .


Was ist Spring Boot Starter POM? Wie kann es nützlich sein?

Starter bieten eine Reihe praktischer Abhängigkeitsbeschreibungen, die Sie in Ihre Anwendung aufnehmen können. Sie erhalten eine Quelle für Spring und verwandte Technologien, ohne Deployment-Deskriptoren suchen und kopieren und einfügen zu müssen.
Wenn Sie beispielsweise mit Spring JPA beginnen möchten, fügen Sie Ihrem Projekt einfach die Spring-Boot-Starter-Data-JPA-Abhängigkeit hinzu.


Starter enthalten die meisten Abhängigkeiten, die Sie benötigen, um das Projekt auszuführen, schnell und konsistent zu arbeiten und Sätze von transitiven Abhängigkeiten zu unterstützen.


Können Sie die Protokollierung über Spring Boot steuern?

Ja Standardmäßig werden Nachrichten mit den Prioritäten FEHLER, WARNUNG, INFO in der Anwendung angezeigt. Um die Ausgabe von DEBUG- oder TRACE-Ebenen zu aktivieren, müssen Sie die --trace --debug / --trace oder die Eigenschaften Eigenschaften debug / trace = true --trace .


 logging.level.root = WARN logging.level.org.springframework.web = DEBUG logging.level.org.hibernate = ERROR 

Standardmäßig protokolliert Sprin Boot nur bei der Konsole. Wenn Sie Ereignisse in einer Datei protokollieren möchten, müssen Sie die Eigenschaften logging.file oder logging.path auf true setzen (z. B. in application.properties).


Farbprotokollierung


In Konsolen, die ANSI unterstützen, können Nachrichten unterschiedlicher Ebenen zur Verbesserung der Lesbarkeit mit unterschiedlichen Farben hervorgehoben werden. So wird es in der Eigenschaftendatei konfiguriert:


 logging.pattern.console=%clr(%d{yyyy-MM-dd HH:mm:ss}) {yellow} 

Wenn Sie in andere Dateien schreiben möchten, können Sie dies auch konfigurieren (YAML):


 logging: path: /var/logs/ file: bookWarn.log level: root: WARN org. springframework: security: DEBUG 

Source: https://habr.com/ru/post/de471312/


All Articles