Inhaltsverzeichnis
dubbo integrierter Nacos-Fall " >dubbo integrierter Nacos-Fall
创建公共接口模块" >创建公共接口模块
创建服务提供者模块" >创建服务提供者模块
创建服务消费者模块" >创建服务消费者模块
Heim Java javaLernprogramm Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

Aug 15, 2023 pm 04:49 PM
nacos dubbo springboot

In diesem Artikel wird ein detailliertes Beispiel geschrieben, um über die dubbo+nacos+Spring Boot tatsächliche Entwicklung 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.

Artikelverzeichnis

  • Umgebungsvorbereitung
    • Dubbo-Einführung
    • Nacos-Umgebungsvorbereitung
    • Na Integration von cos und dubbo
  • Projektmanagementspezifikationen ??
  • Zusammenfassung dieses Artikels
    • Umgebungsvorbereitung
    • Dubbo-Einführung
    • Die Aufrufbeziehung zwischen Dubbo-Kernknoten
  • Knotenbeschreibung
    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    Beschreibung der Aufrufbeziehung

    • Der Dienstcontainer ist für das Starten, Laden und Ausführen des Dienstanbieters verantwortlich.
    • Wenn der Dienstanbieter startet, registriert er die von ihm bereitgestellten Dienste bei der Registrierungsstelle.
    • Dienstleistungskunden abonnieren das Registrierungscenter für die Dienste, die sie zu Beginn benötigen.
    • Das Registrierungszentrum gibt die Adressliste des Dienstleisters an den Verbraucher zurück. Wenn sich eine Änderung ergibt, übermittelt das Registrierungszentrum die Änderungsdaten basierend auf der langen Verbindung an den Verbraucher.
    • Der Dienstkonsument wählt aus der Anbieteradressliste basierend auf dem Soft-Load-Balancing-Algorithmus einen Anbieter zum Anrufen aus. Wenn der Anruf fehlschlägt, wählt er einen anderen Anbieter zum Anrufen aus.
    • Dienstnutzer und -anbieter sammeln die Anzahl der Anrufe und die Anrufzeit im Speicher und senden regelmäßig jede Minute statistische Daten an die Überwachungszentrale.

    Nacos-Umgebungsvorbereitung

    Starten Sie Nacos. In diesem Artikel wird die Nacos-Version 1.4.3 verwendet

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    Nacos integriert mit Dubbo

    Um das Verständnis für alle zu erleichtern, finden Sie hier die entsprechenden Democodes für Hersteller und Verbraucher sowie das verwendete Registrierungscenter.

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    Projektmanagement-Spezifikationen

    Es gibt eine Entsprechung zwischen den Versionen zwischen Springboot, Netflix und Cloud Alibaba. Die für diesen Artikel ausgewählten Versionen sind wie folgt:

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    Es gibt Versionen zwischen Dubbo und cloud alibaba Die entsprechende Beziehung zwischen ihnen und die in diesem Artikel ausgewählte Version lautet wie folgt

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    Zur Vereinfachung der späteren VerwendungSpringCloud Alibaba Erstellen Sie für die Entwicklung zunächst ein übergeordnetes Projekt vom Typ POM, das hauptsächlich für die Versionsverwaltung des Projekttechnologie-Stacks verwendet wird. Erstellen Sie ein Maven-Projekt mit dem Namen spring-cloud -alibaba-example, entfernen Sie die SRC-Datei, ändern Sie die POM-Datei <code style="padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;font-family: 'Operator Mono', Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(228, 105, 24);background-color: rgb(239, 239, 239);font-size: 0.875em;line-height: 1.6 !important;">SpringCloud Alibaba进行开发,首先创建一个pom类型的父项目,主要用于项目技术栈版本管理,创建一个maven项目,名称为spring-cloud-alibaba-example,去除src文件,修改pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>ah.wideth</groupId>
        <artifactId>spring-cloud-alibaba-example</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.3.12.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <packaging>pom</packaging>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.8</java.version>
            <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
            <com-alibaba-cloud.version>2.2.7.RELEASE</com-alibaba-cloud.version>
        </properties>
    
        <!--对项目版本进行管理-->
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>${spring-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
    
                <dependency>
                    <groupId>com.alibaba.cloud</groupId>
                    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                    <version>${com-alibaba-cloud.version}</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </project>
    Nach dem Login kopieren

    后续创建的项目都放到此目录下,只需要声明groupId和artifactId,会自动引用父项目spring-cloud-alibaba-example

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>spring-cloud-alibaba-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <modules>
            <module>public-api</module>
            <module>dubbo-provider</module>
            <module>dubbo-consumer</module>
        </modules>
    
        <artifactId>dubbo-nacos-example</artifactId>
        <name>dubbo-nacos-example</name>
        <description>duboo与nacos整合的父工程</description>
        <packaging>pom</packaging>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <dubbo.version>2.7.13</dubbo.version>
            <nacos.version>1.4.1</nacos.version>
        </properties>
    
    
        <dependencies>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <!--解决nacos-client2.0报错的问题-->
                <exclusions>
                    <exclusion>
                        <artifactId>nacos-client</artifactId>
                        <groupId>com.alibaba.nacos</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    
            <!--dubbo相关-->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-nacos</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${nacos.version}</version>
            </dependency>
    
            <!-- 解决dubbo2.7.13jar包冲突问题-->
            <dependency>
                <groupId>com.alibaba.spring</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>1.0.11</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            
        </dependencies>
    
    </project>
    Nach dem Login kopieren
    Nach dem Login kopieren

    Anschließend erstellte Projekte werden in diesem Verzeichnis abgelegt. Sie müssen nur die Gruppen-ID und die Artefakt-ID deklarieren, und das übergeordnete Projekt wird automatisch referenziert code style="padding: 2px 4px; border-radius: 4px;margin-right: 2px;margin-left: 2px;font-family: 'Operator Mono', Consolas, Monaco, Menlo, monospace;word-break: break- all;color: rgb(228, 105, 24) ;background-color: rgb(239, 239, 239);font-size: 0.875em;line-height: 1.6 !important;">spring-cloud-alibaba-example -Version. Es handelt sich nicht so sehr um ein übergeordnetes Projekt, sondern vielmehr um ein Stammprojekt: Jedes Mal, wenn Sie eine neue Technologie erlernen, wird ein echtes übergeordnetes Projekt erstellt, und unter dem entsprechenden übergeordneten Projekt werden viele Unterprojekte erstellt🎜
    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    dubbo integrierter Nacos-Fall

    Der Fall in diesem Artikel basiert auf dem obigen Nacos-Entwicklungsbeispiel. Beginnen wir mit der Erstellung unseres Projekts und fügen meine Verzeichnisstruktur ein.

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    Modulbeschreibung

    • public-api公共接口模块(接口),供服务消费者和服务提供者调用。
    • dubbo-provider服务提供者模块(接口实现类),引入了public-api模块
    • dubbo-consumer服务消费者模块(controller),引入了public-api模块
    • 消费者和提供者通过公共接口模块进行rpc远程调用

    父工程pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>spring-cloud-alibaba-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <modules>
            <module>public-api</module>
            <module>dubbo-provider</module>
            <module>dubbo-consumer</module>
        </modules>
    
        <artifactId>dubbo-nacos-example</artifactId>
        <name>dubbo-nacos-example</name>
        <description>duboo与nacos整合的父工程</description>
        <packaging>pom</packaging>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <dubbo.version>2.7.13</dubbo.version>
            <nacos.version>1.4.1</nacos.version>
        </properties>
    
    
        <dependencies>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <!--解决nacos-client2.0报错的问题-->
                <exclusions>
                    <exclusion>
                        <artifactId>nacos-client</artifactId>
                        <groupId>com.alibaba.nacos</groupId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    
            <!--dubbo相关-->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-registry-nacos</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>${nacos.version}</version>
            </dependency>
    
            <!-- 解决dubbo2.7.13jar包冲突问题-->
            <dependency>
                <groupId>com.alibaba.spring</groupId>
                <artifactId>spring-context-support</artifactId>
                <version>1.0.11</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            
        </dependencies>
    
    </project>
    Nach dem Login kopieren
    Nach dem Login kopieren
    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    创建公共接口模块

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>dubbo-nacos-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>public-api</artifactId>
        <name>public-api</name>
        <description>api公用接口</description>
        <packaging>jar</packaging>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    Nach dem Login kopieren
    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    公共接口模块里面只有一个接口,没有配置文件,打jar包

    package ah.wideth.api;
    
    /**
     * 让生产者和服务消
     * 费者来使用这个接口
     */
    public interface InfoService {
    
        String getInfo();
    }
    Nach dem Login kopieren
    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    创建服务提供者模块

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>dubbo-nacos-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>dubbo-provider</artifactId>
        <name>dubbo-provider</name>
        <description>dubbo的服务提供者模块</description>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--引入公共接口模块-->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>public-api</artifactId>
                <version>${project.version}</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
    </project>
    Nach dem Login kopieren

    application.yml配置文件

    server:
      port: 8180
    
    spring:
      application:
        name: dubbo-provider
    
    dubbo:
      registry:
        address: nacos://127.0.0.1:8848 #注册地址
      application:
        name: dubbo-provider #应用名
      protocol:
        name: dubbo #dubbo协议
        port: 20880 #协议端口
      scan:
        base-packages: ah.wideth.impl #扫包范围
      provider:
        timeout: 30000 #超时时间
    Nach dem Login kopieren

    接口实现类,该类实现了上面我们在公共接口模块创建的接口

    package ah.wideth.impl;
    
    import ah.wideth.api.InfoService;
    import org.apache.dubbo.config.annotation.DubboService;
    import org.springframework.stereotype.Component;
    
    
    // dubbo提供的Service注解,用于声明对外暴露服务
    // Service引入的是org.apache.dubbo.config.annotation.Service包
    @Component
    @DubboService
    public class InfoServiceImpl implements InfoService {
    
        @Override
        public String getInfo() {
    
            return "hello,这里是dubbo-provider模块!";
        }
    }
    Nach dem Login kopieren

    服务提供者启动类

    package ah.wideth;
    
    import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    
    @EnableDubbo
    @EnableDiscoveryClient
    @SpringBootApplication
    public class DubboProviderApplication {
    
        public static void main(String[] args) {
    
            SpringApplication.run(DubboProviderApplication.class, args);
            System.out.println("dubbo服务提供者8180启动了");
        }
    
    }
    Nach dem Login kopieren

    创建服务消费者模块

    pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <artifactId>dubbo-nacos-example</artifactId>
            <groupId>ah.wideth</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
    
        <artifactId>dubbo-consumer</artifactId>
        <name>dubbo-consumer</name>
        <description>dubbo的服务消费者模块</description>
    
        <properties>
            <java.version>1.8</java.version>
            <project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
    
        <dependencies>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <!--引入公共接口模块-->
            <dependency>
                <groupId>${project.groupId}</groupId>
                <artifactId>public-api</artifactId>
                <version>${project.version}</version>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
    
        </build>
    </project>
    Nach dem Login kopieren

    application.yml配置文件

    server:
      port: 8181
    
    spring:
      application:
        name: dubbo-consumer
    
    dubbo:
      registry:
        address: nacos://127.0.0.1:8848 #注册地址
      application:
        name: dubbo-consumer #应用名
      consumer:
        timeout: 30000 #超时时间
    Nach dem Login kopieren

    controller,调用公共接口模块创建的接口

    package ah.wideth.controller;
    
    import ah.wideth.api.InfoService;
    import org.apache.dubbo.config.annotation.DubboReference;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class InfoController {
    
        //dumbo提供的Reference注解,用于调用远程服务
        @DubboReference(check = false)
        private InfoService infoService;
    
        @GetMapping("/getInfo")
        public String getInfo(){
    
            return infoService.getInfo();
        }
    }
    Nach dem Login kopieren

    服务消费者启动类

    package ah.wideth;
    
    import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    
    @EnableDubbo
    @EnableDiscoveryClient
    @SpringBootApplication
    public class DubboConsumerApplication {
    
        public static void main(String[] args) {
    
            SpringApplication.run(DubboConsumerApplication.class, args);
            System.out.println("dubbo服务消费者8181启动了");
        }
    
    }
    Nach dem Login kopieren

    服务调用测试

    打开Nacos控制面板查看注册中心中的服务

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    启动nacos,启动服务提供者和服务消费者,调用服务消费者的getInfo方法,服务提供者会返回结果

    Praktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung

    本文小结

    本文编写了一个例子来对dubbo整合nacos进行服务调用的例子,不过要注意jar包的冲突问题。

Das obige ist der detaillierte Inhalt vonPraktisches Tutorial zur SpringBoot+Dubbo+Nacos-Entwicklung. 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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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.

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

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

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

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

So erhalten Sie den Wert in application.yml in Springboot So erhalten Sie den Wert in application.yml in Springboot Jun 03, 2023 pm 06:43 PM

In Projekten werden häufig einige Konfigurationsinformationen benötigt. Diese Informationen können in der Testumgebung und in der Produktionsumgebung unterschiedliche Konfigurationen haben und müssen möglicherweise später basierend auf den tatsächlichen Geschäftsbedingungen geändert werden. Wir können diese Konfigurationen nicht fest im Code codieren. Am besten schreiben Sie sie in die Konfigurationsdatei. Sie können diese Informationen beispielsweise in die Datei application.yml schreiben. Wie erhält oder verwendet man diese Adresse im Code? Es gibt 2 Methoden. Methode 1: Wir können den Wert, der dem Schlüssel in der Konfigurationsdatei (application.yml) entspricht, über den mit @Value versehenen Wert erhalten. Diese Methode eignet sich für Situationen, in denen es relativ wenige Mikrodienste gibt: Tatsächlich Projekte, wenn das Geschäft kompliziert ist, Logik

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