Heim >Java >javaLernprogramm >Was sind die Interviewfragen und -antworten für SpringBoot?
Spring Boot ist ein Unterprojekt der Spring-Open-Source-Organisation. Es ist eine One-Stop-Lösung für Spring-Komponenten. Es vereinfacht hauptsächlich die Schwierigkeit bei der Verwendung von
Spring und spart umfangreiche Konfigurationen. und bietet verschiedene Starter, die Entwicklern einen schnellen Einstieg ermöglichen.
#3 Der Unterschied zwischen SpringBoot und SpringCloud# 🎜🎜#
SpringBoot ist ein schnell entwickeltes Spring-Framework, SpringCloud ist ein vollständiges Microservice-Framework und SpringCloud hängt von SpringBoot ab. 4. Was sind die Vorteile von Spring Boot? Spring Boot bietet vor allem die folgenden Vorteile: Es ist einfach zu starten, verbessert die Entwicklungseffizienz und bietet ein schnelleres und einfacheres Entwicklungsframework für die Spring-Entwicklung. Funktioniert sofort nach dem Auspacken, ohne umständliche Konfiguration. Es bietet eine Reihe nicht geschäftlicher Funktionen, die bei Großprojekten üblich sind, wie eingebettete Server, Sicherheitsmanagement, Betriebsdatenüberwachung, Gesundheitsprüfung und externe Konfiguration usw. Die Zusammenfassung von SpringBoot besteht darin, das Codieren, die Konfiguration, die Bereitstellung, die Überwachung usw. zu vereinfachen. 5 Was ist die Kernanmerkung von Spring Boot? Aus welchen Anmerkungen besteht es hauptsächlich? Die Annotation für die Startklasse ist @SpringBootApplication, die auch die Kernannotation von Spring Boot ist. Die Hauptkombination umfasst die folgenden drei Annotationen: @SpringBootConfiguration: Kombiniert die Annotation @Configuration, um die Funktion der Konfigurationsdatei zu implementieren. @EnableAutoConfiguration: Aktivieren Sie die automatische Konfigurationsfunktion oder deaktivieren Sie eine automatische Konfigurationsoption, zum Beispiel
6. Welche Protokollierungsframeworks unterstützt Spring Boot? Was ist das empfohlene und standardmäßige Protokollierungsframework? java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
Spring Boot unterstützt Java Util Logging, Log4j2 und Lockback als Protokollierungsframework. Wenn Sie Starter zum Starten des
7. So funktioniert SpringBoot Starter
Ich persönlich verstehe, dass SpringBoot aus verschiedenen Startern besteht, die beim Start von @SpringBootApplication mit Anmerkungen versehen werden. Es liest automatisch die Datei
8 Was sind die neuen Funktionen von Spring Boot 2.X? Wie unterscheidet es sich von 1.X?
Konfigurationsänderung JDK-Versions-Upgrade. Upgrade der Klassenbibliothek von Drittanbietern. Responsive Spring-Programmierung unterstützt HTTP/2. Unterstützt Konfigurationsattributbindung. Weitere Verbesserungen und Erweiterungen.
9. Welche Frontends unterstützt werden von SpringBoot? Vorlage
thymeleaf, freemarker, jsp, JSP wird nicht offiziell empfohlen und wird Einschränkungen haben
Ich denke Es ist peinlich, SpringBoot Ich glaube derzeit nicht, dass es irgendwelche Mängel gibt. Wenn ich einen finden muss, liegt das meiner Meinung nach daran, dass ich ihn nicht selbst konfigurieren muss, sodass es schwierig ist, einen Fehler zu finden gemeldet.
Paket mit Befehlen oder zum Ausführen in einen Container legen
Maven/Gradle-Plug-in zum Ausführen verwenden
Keine Notwendigkeit, eingebaute Container wie Tomcat/Jetty.
Spring-Boot-Abhängigkeiten Projektabhängigkeiten importieren
Hot-Deployment bedeutet, dass der Betriebshintergrundcode automatisch auf das laufende Projekt aktualisiert werden kann, ohne das SpringBoot-Projekt erneut ausführen zu müssen.
Es gibt zwei Hauptmethoden:
SpringBoot-Dinge sind sehr einfach. Öffnen Sie das Ding zunächst mit der Annotation „EnableTransactionManagement“.
Service-Methode Fügen Sie einfach die Anmerkung Transactional hinzu.
17. Wie führe ich einen bestimmten Code aus, wenn Spring Boot startet?
18. Was sind die Spring Boot-Schnittstellen? Wie liest man die Konfiguration?
Spring JavaConfig ist ein Produkt der Spring-Community. Es wurde in Spring 3.0 eingeführt. Es bietet eine
reine Java-Methode zum Konfigurieren des Spring IOC-Containers. Dadurch wird die Verwendung einer XML-Konfiguration vermieden. Die Vorteile der Verwendung von JavaConfig sind:
Objektorientierte Konfiguration. Da Konfigurationen in JavaConfig als Klassen definiert sind, können Benutzer die objektorientierten Funktionen in Java in vollem Umfang nutzen. Eine Konfigurationsklasse kann eine andere erben, ihre @Bean-Methoden überschreiben usw.
XML-Konfiguration reduzieren oder eliminieren. Die Vorteile einer externalisierten Konfiguration, die auf Prinzipien der Abhängigkeitsinjektion basiert, wurden nachgewiesen. Allerdings möchten viele Entwickler nicht zwischen XML und Java hin und her wechseln. JavaConfig bietet Entwicklern eine reine Java-Methode zum Konfigurieren von Spring-Containern, ähnlich wie bei XML-Konfigurationskonzepten. Aus technischer Sicht ist es möglich, einen Container nur mit der JavaConfig-Konfigurationsklasse zu konfigurieren, aber in der Praxis glauben viele Leute, dass das Mischen und Anpassen von JavaConfig mit XML ideal ist.
Typsicher und Refactoring-freundlich. JavaConfig bietet eine typsichere Möglichkeit, Spring-Container zu konfigurieren. Dank der Unterstützung von Java
5.0 für Generika können Beans jetzt nach Typ statt nach Namen abgerufen werden, ohne dass Umwandlungen oder stringbasierte Suchvorgänge erforderlich sind.
Häufig verwendete Java-Konfiguration:
@Configuration: Schreiben Sie diese Annotation in die Klasse, um anzugeben, dass es sich bei dieser Klasse um eine Konfigurationsklasse handelt.
@ComponentScan: Fügen Sie die @ComponentScan-Annotation in die Konfigurationsklasse ein. Diese Annotation scannt alle Konfigurationsklassen unter dem Paket, in dem sich die Klasse standardmäßig befindet, was dem vorherigen 611dfb857b03b245adf9fd6566a6e09a entspricht.
@Bean: Bean-Injection: Äquivalent zum vorherigen 53150887592fbfd576938e191e9e3746
@EnableWebMvc: Äquivalent zu XML's 6770d88db026c2337d9b450fa27bd029
@ImportResource: Entspricht XML's9119e46c6c6189f0fbb30181c0ef1529
Mit dieser EnableAutoConfiguration wird Folgendes durchgeführt:
Laden Sie die Autokonfigurationsklassen, die verwendet werden können, aus der Konfigurationsdatei META_INF/Spring.factories
Entfernen Sie Duplikate und schließen Sie die Klassen aus, die vom Exclude- und ExcludeName getragen werden attributes# 🎜🎜#Filter, gibt die automatischen Konfigurationsklassen zurück, die die Bedingung erfüllen (@Conditional)
21 Wie verstehen Sie die Ladereihenfolge der Spring Boot-Konfiguration?
22. Was ist YAML?
YAML ist eine für Menschen lesbare Datenserialisierungssprache. Es wird normalerweise in Konfigurationsdateien verwendet. Im Vergleich zu Eigenschaftendateien sind YAML-Dateien strukturierter und weniger verwirrend, wenn wir einer Konfigurationsdatei komplexe Eigenschaften hinzufügen möchten. Es ist ersichtlich, dass YAML
Schichten von Konfigurationsdaten unterteilt hat.
23. Was sind die Vorteile der YAML-Konfiguration?
Ordentliche Konfiguration, in einigen speziellen Szenarien ist eine geordnete Konfiguration sehr wichtig
Einfach und klar, unterstützt auch Arrays, die Elemente im Array können grundlegende Datentypen oder Objekte sein
Im Vergleich zur Eigenschaftenkonfiguration Dateien hat YAML einen weiteren Nachteil: Es unterstützt nicht die @PropertySource-Annotation zum Importieren der
Spring Boot empfiehlt die Verwendung der Java-Konfiguration anstelle der XML-Konfiguration, aber die XML-Konfiguration kann auch in Spring Boot über #🎜 verwendet werden 🎜#Eine XML-Konfiguration kann über die Annotation @ImportResource eingeführt werden.
25. Was ist die Kernkonfigurationsdatei von Spring Boot? Was ist der Unterschied zwischen Bootstrap.Properties und Application.Properties? Diese Konfiguration wird häufig angetroffen, insbesondere wenn Sie einige Remote-Konfigurationsdateien laden müssen.
Spring Boot Core zwei Konfigurationsdateien:
bootstrap (. yml oder . Properties): Boostrap wird vom übergeordneten ApplicationContext geladen und vor der Anwendung geladen. Die Konfiguration wird in der Startphase des Anwendungskontexts wirksam. Im Allgemeinen verwenden wir diese Datei in der Spring Cloud-Konfiguration. Und die Eigenschaften in Boostrap können nicht überschrieben werden;
Während der Projektentwicklung können einige Konfigurationsdateien in verschiedenen Umgebungen wie Entwicklung, Test oder Produktion unterschiedlich sein, z. B. Datenbankverbindung, Redis-Konfiguration usw. Wie wechseln wir also automatisch die Konfigurationen in verschiedenen Umgebungen? Spring stellt uns den
profiles-Mechanismus zur Verfügung, der uns die Funktion bietet, Konfigurationsdateien hin und her zu wechseln.
Spring Profiles ermöglicht es Benutzern, Beans basierend auf Konfigurationsdateien (dev, test, prod usw.) zu registrieren. Wenn die Anwendung
also in der Entwicklung läuft, können nur bestimmte Beans geladen werden, während in der PRODUKTION bestimmte andere Beans geladen werden können.
Angenommen, unsere Anforderung besteht darin, dass die Swagger-Dokumentation nur in der QA-Umgebung verfügbar ist und alle anderen Dokumentationen deaktiviert sind. Dies kann mithilfe von Konfigurationsdateien erfolgen. Spring Boot macht die Arbeit mit Konfigurationsdateien sehr einfach.
27. SpringBoot-Idee zur Aufteilung mehrerer Datenquellen
28. So verwalten Sie SpringBoot-Transaktionen mit mehreren Datenquellen
konfigurierte Transaktion anzugeben. Die zweite Möglichkeit besteht darin, jta-atomikos zu verwenden um ein verteiltes Transaktionsmanagement zu implementieren
29. Welche Methoden gibt es, um Spring Boot-Anwendungen zu schützen?
Upgrade auf die neueste Version.
Aktivieren Sie den CSRF-Schutz.
Verwenden Sie Content Security Policy, um XSS-Angriffe zu verhindern.
30. Wie implementiert man Sicherheit in Spring Boot-Anwendungen?
31. Vergleichen Sie die Vor- und Nachteile von Spring Security und Shiro?
Spring Security ist ein schweres Sicherheitsmanagement-Framework; Shiro ist ein leichtes Sicherheitsmanagement-Framework; hat leistungsstarke Funktionen; Shiro hat einfache Funktionen
32. Wie löst man domänenübergreifende Probleme in Spring Boot?
Domänenübergreifende Probleme können über JSONP im Frontend gelöst werden, aber JSONP kann nur GET-Anfragen senden und keine anderen Arten von Anfragen.
In Anwendungen im RESTful-Stil scheint es sehr nutzlos zu sein, daher empfehlen wir die Verwendung von (CORS, Crossorigin-Ressourcenfreigabe) im Backend, um domänenübergreifende Probleme zu lösen. Diese Lösung gibt es nicht nur für Spring Boot. Domänenübergreifende Probleme können jedoch durch CORS gelöst werden. Jetzt können wir die WebMvcConfigurer-Schnittstelle implementieren Die Methode addCorsMappings löst domänenübergreifende Probleme.
@Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); } }
34. Wie verwende ich Spring Boot, um eine globale Ausnahmebehandlung zu implementieren?
Spring bietet eine sehr nützliche Möglichkeit, Ausnahmen mithilfe von ControllerAdvice zu behandeln. Wir implementieren eine
ControlerAdvice-Klasse, um alle von der Controller-Klasse ausgelösten Ausnahmen zu behandeln.
Spring Boot bietet Monitor-Endpunkte zur Überwachung der Metriken einzelner Microservices. Diese Endpunkte sind nützlich, um Informationen über Anwendungen zu erhalten
, z. B. ob sie gestartet sind oder nicht und ob ihre Komponenten wie Datenbanken usw. ordnungsgemäß ausgeführt werden. Ein großer Nachteil oder eine große Schwierigkeit bei der Verwendung von Monitor
besteht jedoch darin, dass wir den Wissenspunkt der Anwendung einzeln öffnen müssen, um ihren Status oder Zustand zu erfahren. Stellen Sie sich einen Mikrodienst vor, der 50 Anwendungen umfasst. Der Administrator müsste das Ausführungsterminal aller 50 Anwendungen erreichen. Um uns bei der Bewältigung dieser Situation zu helfen, verwenden wir das Open-Source-Projekt unter . Es basiert auf Spring Boot Actuator und bietet eine Web-Benutzeroberfläche, mit der wir die Metriken mehrerer Anwendungen visualisieren können.
如果项目比较大,类比较多,不使用@SpringBootApplication,采用@Compoment指定扫包范
围
在项目启动时设置JVM初始内存和最大内存相同
将springboot内置服务器由tomcat设置为undertow
这可以使用 DEV 工具来实现。通过这种依赖关系,您可以节省任何更改,嵌入式tomcat 将重新启
动。Spring Boot 有一个开发工具(DevTools)模块,它有助于提高开发人员的生产力。Java 开
发人员面临的一个主要挑战是将文件更改自动部署到服务器并自动重启服务器。开发人员可以重新
加载 Spring Boot 上的更改,而无需重新启动服务器。这将消除每次手动部署更改的需要。Spring
Boot 在发布它的第一个版本时没有这个功能。这是开发人员最需要的功能。DevTools 模块完全满
足开发人员的需求。该模块将在生产环境中被禁用。它还提供 H2 数据库控制台以更好地测试应用
程序。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
在微服务中,一个完整的项目被拆分成多个不相同的独立的服务,各个服务独立部署在不同的服务
器上,各自的 session 被从物理空间上隔离开了,但是经常,我们需要在不同微服务之间共享
session ,常见的方案就是 Spring Session + Redis 来实现 session 共享。将所有微服务的
session 统一保存在 Redis 上,当各个微服务对 session 有相关的读写操作时,都去操作 Redis 上
的 session 。这样就实现了 session 共享,Spring Session 基于 Spring 中的代理过滤器实现,使
得 session 的同步操作对开发人员而言是透明的,非常简便。
使用了下面的一些依赖项
spring-boot-starter-web 嵌入tomcat和web开发需要servlet与jsp支持
spring-boot-starter-data-jpa 数据库支持
spring-boot-starter-data-redis redis数据库支持
spring-boot-starter-data-solr solr支持
mybatis-spring-boot-starter 第三方的mybatis集成starter
自定义的starter(如果自己开发过就可以说出来)
首先,这个 Starter 并非什么新的技术点,基本上还是基于 Spring 已有功能来实现的。首先它提
供了一个自动化配置类,一般命名为 XXXAutoConfiguration ,在这个配置类中通过条件注解来
决定一个配置是否生效(条件注解就是 Spring 中原本就有的),然后它还会提供一系列的默认配
置,也允许开发者根据实际情况自定义相关配置,然后通过类型安全的属性(spring.factories)注入
将这些配置属性注入进来,新注入的属性会代替掉默认属性。正因为如此,很多第三方框架,我们
只需要引入依赖就可以直接使用了。当然,开发者也可以自定义 Starter
在 Spring Boot 中使用定时任务主要有两种不同的方式,一个就是使用 Spring 中的 @Scheduled
注解,另一-个则是使用第三方框架 Quartz。
使用 Spring 中的 @Scheduled 的方式主要通过 @Scheduled 注解来实现。
我们都知道,新创建一个 Spring Boot 项目,默认都是有 parent 的,这个 parent 就是 springboot-starter-parent ,spring-boot-starter-parent 主要有如下作用:
定义了 Java 编译版本为 1.8 。
使用 UTF-8 格式编码。
继承自 spring-boot-dependencies,这个里边定义了依赖的版本,也正是因为继承了这个依
赖,所以我们在写依赖时才不需要写版本号。
执行打包操作的配置。
自动化的资源过滤。
自动化的插件配置。
针对 application.properties 和 application.yml 的资源过滤,包括通过 profile 定义的不同
环境的配置文件,例如 application-dev.properties 和 application-dev.yml。
总结就是打包用的
进入项目目录在控制台输入mvn clean package,clean是清空已存在的项目包,package进行打
包或者点击左边选项栏中的Mavne,先点击clean在点击package
direkt der Paketname und das Paket ist unser Code. Nach der Dekomprimierung ist das von Spring Boot gepackte ausführbare JAR unser Code im BOOTINFclasses-Verzeichnis, sodass nicht direkt darauf verwiesen werden kann. Wenn Sie darauf verweisen müssen, können Sie der Datei pom.xml Konfigurationen hinzufügen und das Spring Boot-Projekt in zwei JARs packen, eine ausführbare und eine referenzierbare.
Das obige ist der detaillierte Inhalt vonWas sind die Interviewfragen und -antworten für SpringBoot?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!