Spring boot интегрированная полная версия dubbo enterprise

Java

1. Что такое Spring Boot?

На данном этапе Spring Boot слишком горячий, почему? Потому что он прост в использовании, прост в настройке и быстр в использовании, так что же это такое? На официальном веб-сайте мы видим, что это подпроект в рамках организации с открытым исходным кодом Spring, который в основном упрощает тяжелую настройку Spring, а Spring Boot включает в себя различные контейнеры сервлетов, такие как: Tomcat, Jetty и т. д.

Официальный сайт: http://projects.spring.io/spring-boot/GitHub Исходный код: https://github.com/spring-projects/spring-boot

Во-вторых, преимущества Spring Boot?

1. Независимая работа: для запуска не нужно использовать контейнер, такой как tomcat. 2. Упрощенная конфигурация: нет необходимости настраивать много xml, как Spring mvc 3. Автоматическая настройка: автоматическая настройка bean-компонентов в соответствии с путем к пакету4, мониторинг приложений: Spring Boot предоставляет услуги мониторинга

3. Создание проекта

1. Создайте провайдера

image.png

image.pngimage.png

image.png

Затем нажмите «Готово», создание завершено, а затем удалите лишние пакеты, чтобы структура проекта была следующей:

image.png

Щелкните правой кнопкой мыши проект и создайте новый модуль qbs-facade, предоставляющий услуги внешнему миру.

image.png

image.png

image.png

Затем создайте модуль qbs-web в соответствии с этим режимом (здесь не представлен).Окончательная структура проекта показана на следующем рисунке:image.png

image.png

Изменить основной файл 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>
    <packaging>pom</packaging>
    <groupId>com.btd</groupId>
    <artifactId>qbs</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qbs</name>

    <modules>
        <module>qbs-facade</module>
        <module>qbs-api</module>
    </modules>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <dubbo.version>2.7.1</dubbo.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

3. Напишите фасад

image.png

SayFacade.java

package com.btd.qbs.facade;

public interface SayFacade {
    String say(String context);
}

xml-файл фасадного модуля, он обеспечивает только интерфейс с внешним миром, так что больше ничего не нужно

<?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>com.btd</groupId>
    <artifactId>qbs-facade</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qbs-facade</name>
    <packaging>jar</packaging>

</project>

4. Организуйте модули API и реализуйте фактический интерфейс

image.png

Сначала посмотрите на файл pom.xml

<?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">
    <parent>
        <artifactId>qbs</artifactId>
        <groupId>com.btd</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>qbs-api</artifactId>
    <packaging>jar</packaging>


    <dependencies>
        <!-- spring boot 相关 start  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- spring boot 相关 end  -->

        <!--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</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>${dubbo.version}</version>
            <type>pom</type>
        </dependency>
        <!-- dubbo 相关依赖 end-->

        <dependency>
            <groupId>com.btd</groupId>
            <artifactId>qbs-facade</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

файл application.properties

spring.application.name=qbs-provider

server.port=11222

dubbo.application.id=${spring.application.name}
dubbo.application.name=${spring.application.name}
dubbo.protocol.port = 28820
dubbo.protocol.name=${spring.application.name}

# zk注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

# 提供者配置
dubbo.provider.name=dubbo
dubbo.provider.protocol=dubbo
dubbo.provider.version=1.0.0
dubbo.provider.timeout=30000

SayFacadeImpl.java

package com.btd.qbs.service;

import com.btd.qbs.facade.SayFacade;
import org.apache.dubbo.config.annotation.Service;

@Service
public class SyaFacadeImpl implements SayFacade {

    @Override
    public String say(String context) {
        return "小肥羊对你说:"+context;
    }
}

Файл запуска Application.java

package com.btd.qbs;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;

@EnableDubbo
@SpringBootApplication(exclude = MongoAutoConfiguration.class)
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}

OK, на этом наш провайдер готов, запускаем проект, а потом смотрим dubbo-adminimage.png

Обратите внимание, потому что наш фасад должен отражаться во внешний мир, поэтому мы делаем упаковку из баночки.

image.png

После упаковки мы получим jar-файлimage.png

2. Создайте потребителей

image.png

Представьте нашу упаковку банок

image.png

Конфигурационный файл:

spring.application.name=qbs-consumer

server.port=11121
dubbo.application.id=${spring.application.name}
dubbo.application.name=${spring.application.name}
dubbo.protocol.port=28820
dubbo.protocol.name=dubbo

# zk注册中心地址
dubbo.registry.address=zookeeper://172.25.37.130:2181

# 消费者配置
dubbo.consumer.version=1.0.0
dubbo.consumer.check=false
dubbo.consumer.timeout=8000

файл pom.xml

<?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>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.btd.abs</groupId>
    <artifactId>qbs-consumer</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>qbs-consumer</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <dubbo.version>2.7.1</dubbo.version>
    </properties>

    <dependencies>
        <!-- spring boot 相关 start  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- spring boot 相关 end  -->

        <!--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</artifactId>
            <version>${dubbo.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-dependencies-zookeeper</artifactId>
            <version>${dubbo.version}</version>
            <type>pom</type>
        </dependency>
        <!-- dubbo 相关依赖 end-->

        <!-- 基础依赖 start -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.59</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
        <!-- 基础依赖 end -->

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Файл Application.java

package com.btd.abs;

import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;

@EnableDubbo
@SpringBootApplication(exclude = MongoAutoConfiguration.class)
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Файл DbsController.java

package com.btd.abs.controller;

import com.btd.qbs.facade.SayFacade;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;


@RestController
@RequestMapping("/qbs")
public class DbsController {

    @Reference
    private SayFacade sayFacade;

    @GetMapping("/say")
    @ResponseBody
    public String say(String context) {
         return sayFacade.say(context);
    }
}

Окончательный результат вызова: http://localhost:11121/qbs/say?context=asde3

image.png

image.png

Что ж, это полный набор коммерческих примеров кода для весенней загрузки для интеграции даббо, Совершенно нормально работать сверху вниз;

Если интересно, можете обратить внимание на мой публичный номер!公众号

Оригинал статьи, пожалуйста, сделайте заявление для перепечатки, спасибо! ! ! ! ! !