Inhaltsverzeichnis
So implementieren Sie Springboot
1. Abhängigkeitsverwaltungsfunktionen
1. Übergeordnetes Projekt
2. Szenario-Starter
1. 自动配置组件
2. 默认的包结构
3. 各种配置拥有默认值
4. 按需加载所有自动配置项
Heim Java javaLernprogramm So implementieren Sie die automatische SpringBoot-Konfiguration

So implementieren Sie die automatische SpringBoot-Konfiguration

May 12, 2023 pm 02:31 PM
springboot

    So implementieren Sie Springboot

    Im vorherigen Helloworld-Beispiel habe ich zunächst erlebt, wie einfach es ist, dass Springboot automatisch Abhängigkeiten importiert und die Konfiguration abschließt.

    Wie wird Springboot implementiert?

    1. Abhängigkeitsverwaltungsfunktionen

    Schauen Sie sich zunächst die pom.xml im vorherigen Inhaltsbeispiel an:

    <!--导入父工程-->
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.3.4.RELEASE</version>
      </parent>
      <dependencies>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
      </dependencies>
    Nach dem Login kopieren

    Hier wird ein übergeordnetes Projekt hinzugefügt, und schließlich wird nur eine Abhängigkeit, spring-boot-starter-web, importiert. Wir haben die entsprechenden Pakete erhalten.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Sie müssen sich während des gesamten Prozesses keine Sorgen um das Reiseführerpaket machen.

    1. Übergeordnetes Projekt

    Jedes Springboot-Projekt verfügt über ein übergeordnetes Projekt, das im Allgemeinen für das Abhängigkeitsmanagement verwendet wird.

    Das übergeordnete Projekt kann viele Abhängigkeiten deklarieren. Solange das Unterprojekt das übergeordnete Projekt erbt, ist es nicht erforderlich, beim späteren Hinzufügen von Abhängigkeiten eine Versionsnummer hinzuzufügen.

    Nehmen wir das Obige als Beispiel: Das übergeordnete Projekt verwendet die Springboot-Version von 2.3.4.RELEASE, sodass die Versionsnummer für die unten hinzugefügten Abhängigkeiten nicht angegeben werden muss.

    (1) Wie das übergeordnete Projekt Versionen verwaltet

    Sie können die Strg-Taste gedrückt halten und auf das übergeordnete Projekt klicken, um dies herauszufinden.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Nachdem ich reinkam, stellte ich fest, dass er auch ein übergeordnetes Projekt mit Spring-Boot-Abhängigkeiten hat.

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.3.4.RELEASE</version>
      </parent>
    Nach dem Login kopieren

    Fahren Sie mit der Eingabe von Spring-Boot-Abhängigkeiten fort, und Sie können unten ein Eigenschaften-Tag sehen:

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Fast alle JAR-Paketversionen, die wir möglicherweise in der Entwicklung verwenden, werden hier deklariert.

    Fahren Sie fort und Sie können die spezifische Abhängigkeitsverwaltung dependencyManagement sehen. Die hier angegebene Version ist die in den Eigenschaften deklarierte Version.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Zum Beispiel:

    Ich habe links ein Paket namens logback gesehen, also habe ich es durchsucht und festgestellt, dass die hier definierte Version 1.2.3 ist.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Die Hauptfunktion des übergeordneten Projekts ist also das Abhängigkeitsmanagement, das nahezu die Versionsnummern von Abhängigkeiten angibt, die häufig in der Entwicklung verwendet werden.

    (2) Verwenden Sie die angegebene Version

    Wenn Sie nicht die automatisch geschlichtete Version verwenden möchten, können Sie auch die angegebene Version verwenden.

    Für die MySQL-Version ist das Ergebnis der automatischen Schlichtung beispielsweise 8.0.21, ich möchte jedoch nur Version 5.1.43 verwenden.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Fügen Sie ein Eigenschaften-Tag hinzu und deklarieren Sie darin die Version.

    <properties>
          <mysql.version>5.1.43</mysql.version>
      </properties>
    Nach dem Login kopieren

    Schauen Sie sich die importierten Abhängigkeiten noch einmal an, es ist die angegebene Version geworden.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    2. Szenario-Starter

    Werfen wir einen Blick auf die erste importierte Abhängigkeit Spring-Boot-Starter-Web:

    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
    Nach dem Login kopieren

    Wir werden in Zukunft weitere Starter mit dem Namen Spring-Boot-Starter sehen. Eine ausführliche Anleitung gibt es auch in den offiziellen Dokumenten

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Was ist ein Starter?

    Starter ist eine Reihe von Abhängigkeitsbeschreibungen. Das heißt, wir müssen normalerweise nur einen Starter einführen, und dann wird das entsprechende gesamte Entwicklungsszenario eingeführt.

    Wenn Sie beispielsweise Spring und JPA für den Datenbankzugriff verwenden möchten, führen Sie die Abhängigkeit spring-boot-starter-data-jpa in das Projekt ein.

    Beachten Sie außerdem, dass spring-boot-starter-* hier die offizielle Benennungsmethode für Starter ist.

    Es gibt also inoffizielle? Ja, wenn Sie das Gefühl haben, dass das offizielle Starter-Szenario Ihren Anforderungen immer noch nicht entspricht, können Sie den Starter individuell anpassen.

    Aber die offizielle Empfehlung lautet, für die individuelle Benennung den Thirdpartyproject-Spring-Boot-Starter zu verwenden.

    Was den Grund betrifft, warum Sie die Abhängigkeiten der gesamten Szene importieren können, indem Sie nur einen Starter importieren, handelt es sich tatsächlich um die gleiche Abhängigkeitsfunktion von Maven wie beim übergeordneten Projekt oben.

    Gehen Sie zu spring-boot-starter-web, scrollen Sie nach unten und Sie können die Abhängigkeiten sehen, die bei der Entwicklung von Webszenarien verwendet werden.

    So implementieren Sie die automatische SpringBoot-Konfiguration

    Welches Szenario Sie in Zukunft entwickeln müssen, lesen Sie einfach in der offiziellen Dokumentation nach und importieren Sie den entsprechenden Launcher. ?? Probleme

  • 默认的包结构:主程序所在包以及下面所有子包里的组件都会被默认扫描

  • 各种配置拥有默认值

  • 按需加载所有自动配置项

  • ......

  • 1. 自动配置组件

    不管自动配置好什么,步骤都是:先引入、再配置。

    比如 tomcat,那么前提是先引入了 tomcat 依赖,这就由上面第一部分内容所讲的依赖管理完成,在引入了 web starter 后,自动引入场景。

    自动引入了场景,也就引入了这个场景下所用到的各种 jar 包,接下来就是要配置这些内容,比如 tomcat、springMVC 等等。

    拿 springMVC 举例,在之前要使用 springMVC,肯定要配置DispatcherServlet,帮我们拦截所有请求。

    <servlet>
            <servlet-name>springMVC</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springMVC.xml</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    Nach dem Login kopieren

    现在看下之前的 helloworld 应用中,springboot 是在哪里帮我们做好配置的。

    先看主程序类:

    // 标记这是一个 springboot应用,这个类是主程序类,所有启动的入口
    @SpringBootApplication
    public class MainApplication {
        public static void main(String[] args) {
            SpringApplication.run(MainApplication.class, args);
        }
    }
    Nach dem Login kopieren

    可以创建个本地变量(alt+enter),可以看到这个是个ConfigurableApplicationContext类型。

    So implementieren Sie die automatische SpringBoot-Konfiguration

    @SpringBootApplication
    public class MainApplication {
        public static void main(String[] args) {
            ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
        }
    }
    Nach dem Login kopieren

    可以使用getBeanDefinitionNames()方法,查看里面包含了哪些容器,遍历打印出来。

    @SpringBootApplication
    public class MainApplication {
        public static void main(String[] args) {
            // 返回IOC容器
            final ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
            // 查看容器里的组件
            final String[] beanDefinitionNames = run.getBeanDefinitionNames();
            for (String name: beanDefinitionNames) {
                System.out.println(name);
            }
        }
    }
    Nach dem Login kopieren

    接下来启动应用,看下控制台输出。

    So implementieren Sie die automatische SpringBoot-Konfiguration

    在控制台输出里ctrl+F搜索下DispatcherServlet:

    So implementieren Sie die automatische SpringBoot-Konfiguration

    发现 IOC 容器中已经有了对应的组件。

    2. 默认的包结构

    主程序所在包以及下面所有子包里的组件都会被默认扫描,所以我们不需要配置开启组件扫描,也可以正常使用。

    但是要注意这里的范围:

    So implementieren Sie die automatische SpringBoot-Konfiguration

    示例中就是com.pingguo.boot包下以及所有子包都可以自动扫描。

    如果你就是要放到外面,还希望被扫描到,怎么办?

    那么可以使用主程序类中@SpringBootApplication注解中的一个属性scanBasePackages,扩大包的范围即可:

    @SpringBootApplication(scanBasePackages = "com.pingguo")
    public class MainApplication {
        public static void main(String[] args) {
    ... ...
    Nach dem Login kopieren
    3. 各种配置拥有默认值

    比如 tomcat端口,在application.properties配置文件里使用 idea 输入的时候,就可以看到带有默认值8080:

    So implementieren Sie die automatische SpringBoot-Konfiguration

    点击进去可看到后面都是绑定了对应的 java 类。

    So implementieren Sie die automatische SpringBoot-Konfiguration

    配置文件的值最终会绑定在对应的类上,这个类会在容器中创建对象。

    4. 按需加载所有自动配置项

    比如应用中只引入了spring-boot-starter-web,那么就只有web场景的自动配置才会开启。

    springboot 中的所有自动配置,都在这里:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-autoconfigure</artifactId>
        <version>2.3.4.RELEASE</version>
        <scope>compile</scope>
      </dependency>
    Nach dem Login kopieren

    点击spring-boot-starter-web可以找到spring-boot-starter,再进入其中就可以看到spring-boot-autoconfigure。

    Das obige ist der detaillierte Inhalt vonSo implementieren Sie die automatische SpringBoot-Konfiguration. 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

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Wie Springboot Jasypt integriert, um die Verschlüsselung von Konfigurationsdateien zu implementieren Jun 01, 2023 am 08:55 AM

    Einführung in Jasypt Jasypt ist eine Java-Bibliothek, die es einem Entwickler ermöglicht, seinem Projekt mit minimalem Aufwand grundlegende Verschlüsselungsfunktionen hinzuzufügen und kein tiefes Verständnis der Funktionsweise der Verschlüsselung erfordert. standardbasierte Verschlüsselungstechnologie. Passwörter, Text, Zahlen, Binärdateien verschlüsseln ... Geeignet für die Integration in Spring-basierte Anwendungen, offene API, zur Verwendung mit jedem JCE-Anbieter ... Fügen Sie die folgende Abhängigkeit hinzu: com.github.ulisesbocchiojasypt-spring-boot-starter2 Die Vorteile von Jasypt schützen unsere Systemsicherheit. Selbst wenn der Code durchgesickert ist, kann die Datenquelle garantiert werden.

    Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren Wie SpringBoot Redisson integriert, um eine Verzögerungswarteschlange zu implementieren May 30, 2023 pm 02:40 PM

    Nutzungsszenario 1. Die Bestellung wurde erfolgreich aufgegeben, die Zahlung erfolgte jedoch nicht innerhalb von 30 Minuten. Die Zahlung ist abgelaufen und die Bestellung wurde automatisch storniert. 2. Die Bestellung wurde unterzeichnet und es wurde 7 Tage lang keine Bewertung durchgeführt. Wenn die Bestellung abläuft und nicht ausgewertet wird, wird die Bestellung standardmäßig positiv bewertet. Wenn der Händler die Bestellung innerhalb von 5 Minuten nicht erhält, wird die Bestellung abgebrochen Es wird eine SMS-Erinnerung gesendet ... Für Szenarien mit langen Verzögerungen und geringer Echtzeitleistung können wir die Aufgabenplanung verwenden, um eine regelmäßige Abfrageverarbeitung durchzuführen. Zum Beispiel: xxl-job Heute werden wir auswählen

    So implementieren Sie verteilte Sperren mit Redis in SpringBoot So implementieren Sie verteilte Sperren mit Redis in SpringBoot Jun 03, 2023 am 08:16 AM

    1. Redis implementiert das Prinzip der verteilten Sperren und warum verteilte Sperren erforderlich sind. Bevor über verteilte Sperren gesprochen wird, muss erläutert werden, warum verteilte Sperren erforderlich sind. Das Gegenteil von verteilten Sperren sind eigenständige Sperren. Wenn wir Multithread-Programme schreiben, vermeiden wir Datenprobleme, die durch den gleichzeitigen Betrieb einer gemeinsam genutzten Variablen verursacht werden. Normalerweise verwenden wir eine Sperre, um die Richtigkeit der gemeinsam genutzten Variablen sicherzustellen Die gemeinsam genutzten Variablen liegen im gleichen Prozess. Wenn es mehrere Prozesse gibt, die gleichzeitig eine gemeinsam genutzte Ressource betreiben müssen, wie können sie sich dann gegenseitig ausschließen? Heutige Geschäftsanwendungen sind in der Regel Microservice-Architekturen, was auch bedeutet, dass eine Anwendung mehrere Prozesse bereitstellen muss. Wenn mehrere Prozesse dieselbe Datensatzzeile in MySQL ändern müssen, ist eine Verteilung erforderlich, um fehlerhafte Daten zu vermeiden wird zu diesem Zeitpunkt eingeführt. Der Stil ist gesperrt. Punkte erreichen wollen

    So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann So lösen Sie das Problem, dass Springboot nach dem Einlesen in ein JAR-Paket nicht auf die Datei zugreifen kann Jun 03, 2023 pm 04:38 PM

    Springboot liest die Datei, kann aber nach dem Packen in ein JAR-Paket nicht auf die neueste Entwicklung zugreifen. Es gibt eine Situation, in der Springboot die Datei nach dem Packen in ein JAR-Paket nicht lesen kann ist ungültig und kann nur über den Stream gelesen werden. Die Datei befindet sich unter resources publicvoidtest(){Listnames=newArrayList();InputStreamReaderread=null;try{ClassPathResourceresource=newClassPathResource("name.txt");Input

    So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden So implementieren Sie Springboot+Mybatis-plus, ohne SQL-Anweisungen zum Hinzufügen mehrerer Tabellen zu verwenden Jun 02, 2023 am 11:07 AM

    Wenn Springboot + Mybatis-plus keine SQL-Anweisungen zum Hinzufügen mehrerer Tabellen verwendet, werden die Probleme, auf die ich gestoßen bin, durch die Simulation des Denkens in der Testumgebung zerlegt: Erstellen Sie ein BrandDTO-Objekt mit Parametern, um die Übergabe von Parametern an den Hintergrund zu simulieren dass es äußerst schwierig ist, Multi-Table-Operationen in Mybatis-plus durchzuführen. Wenn Sie keine Tools wie Mybatis-plus-join verwenden, können Sie nur die entsprechende Mapper.xml-Datei konfigurieren und die stinkende und lange ResultMap konfigurieren Schreiben Sie die entsprechende SQL-Anweisung. Obwohl diese Methode umständlich erscheint, ist sie äußerst flexibel und ermöglicht es uns

    Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

    SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

    Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Wie SpringBoot Redis anpasst, um die Cache-Serialisierung zu implementieren Jun 03, 2023 am 11:32 AM

    1. Passen Sie den RedisTemplate1.1-Standard-Serialisierungsmechanismus an. Die API-basierte Redis-Cache-Implementierung verwendet die RedisTemplate-Vorlage für Daten-Caching-Vorgänge. Öffnen Sie hier die RedisTemplate-Klasse und zeigen Sie die Quellcodeinformationen der Klasse publicclassRedisTemplateextendsRedisAccessorimplementsRedisOperations an. Schlüssel deklarieren, verschiedene Serialisierungsmethoden des Werts, der Anfangswert ist leer @NullableprivateRedisSe

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung Aug 15, 2023 pm 04:49 PM

    In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die tatsächliche Entwicklung von Dubbo + Nacos + Spring Boot zu sprechen. In diesem Artikel wird nicht zu viel theoretisches Wissen behandelt, sondern das einfachste Beispiel wird geschrieben, um zu veranschaulichen, wie Dubbo in Nacos integriert werden kann, um schnell eine Entwicklungsumgebung aufzubauen.

    See all articles