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. Создайте провайдера
Затем нажмите «Готово», создание завершено, а затем удалите лишние пакеты, чтобы структура проекта была следующей:
Щелкните правой кнопкой мыши проект и создайте новый модуль qbs-facade, предоставляющий услуги внешнему миру.
Затем создайте модуль qbs-web в соответствии с этим режимом (здесь не представлен).Окончательная структура проекта показана на следующем рисунке:
Изменить основной файл 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. Напишите фасад
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 и реализуйте фактический интерфейс
Сначала посмотрите на файл 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-admin
Обратите внимание, потому что наш фасад должен отражаться во внешний мир, поэтому мы делаем упаковку из баночки.
После упаковки мы получим jar-файл
2. Создайте потребителей
Представьте нашу упаковку банок
Конфигурационный файл:
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
Что ж, это полный набор коммерческих примеров кода для весенней загрузки для интеграции даббо, Совершенно нормально работать сверху вниз;
Если интересно, можете обратить внимание на мой публичный номер!
Оригинал статьи, пожалуйста, сделайте заявление для перепечатки, спасибо! ! ! ! ! !