淦 直接上代码
先看工程结构
springboot-dubbo-demo 是父工程
dubbo-api 定义申明dubbo服务的接口
dubbo-consumer 调用服务
dubbo-provider 实现服务并提供服务
需要安装并运行 nacos
1.以下是 父工程( springboot-dubbo-demo)的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.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lm</groupId>
<artifactId>springboot-dubbo-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-dubbo-demo</name>
<description>springboot-dubbo-demo</description>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
</properties>
<modules>
<module>dubbo-api</module>
<module>dubbo-provider</module>
<module>dubbo-consumer</module>
</modules>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- dubbo -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>3.1.7</version>
</dependency>
<!-- dubbo nocaos -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.1.7</version>
</dependency>
<!-- dubbo springgoot -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>3.1.7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2 .以下是dubbo-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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.lm</groupId>
<artifactId>springboot-dubbo-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.lm</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dubbo-api</name>
<description>dubbo-api</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.以下是dubbo-provider的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>com.lm</groupId>
<artifactId>springboot-dubbo-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.example</groupId>
<artifactId>dubbo-provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dubbo-provider</name>
<description>dubbo-provider</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.lm</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.以下是dubbo-consumer的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>com.lm</groupId>
<artifactId>springboot-dubbo-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.lm</groupId>
<artifactId>dubbo-consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dubbo-consumer</name>
<description>dubbo-consumer</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.lm</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
5.下面讲具体代码 dubbo-api 里面 声明一个接口 有两个方法
package com.lm.dubbo.api;
public interface ILoginService {
void doLoginByWeChat(String userName,String pwd);
void doLoginByGoogle(String userName,String pwd);
}
6.dubbo-provider 服务提供者代码
主入口函数 DubboProviderApplication.class
@SpringBootApplication
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
}
方法实现 LoginService.class
import com.lm.dubbo.api.ILoginService;
import org.apache.dubbo.config.annotation.DubboService;
@DubboService
public class LoginService implements ILoginService {
@Override
public void doLoginByWeChat(String userName, String pwd) {
System.out.println("微信登录 :"+userName +" "+pwd);
}
@Override
public void doLoginByGoogle(String userName, String pwd) {
System.out.println("谷歌登录 :"+userName +" "+pwd);
}
}
配置文件 application.properties
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.registry.address=nacos://192.168.2.87:8848
dubbo.registry.group=test
dubbo.registry.version=1
dubbo.consumer.check=false
dubbo.scan.base-packages=com.lm.dubbo
dubbo.consumer.timeout=10000
dubbo.application.name=login-server
7 dubbo-consumer 消费者代码
主入口类 DubboConsumerApplication.class
@SpringBootApplication
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
服务消费 ConsumerService.class
package com.lm.dubbo.consumer;
import com.lm.dubbo.api.ILoginService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Service;
@Service
public class ConsumerService implements ApplicationRunner {
@DubboReference
private ILoginService iLoginService;
@Override
public void run(ApplicationArguments args) throws Exception {
iLoginService.doLoginByGoogle("张三","1234356");
}
}
config application.properties
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.registry.address=nacos://192.168.2.87:8848
dubbo.registry.group=test
dubbo.registry.version=1
dubbo.consumer.check=false
dubbo.scan.base-packages=com.lm.dubbo
dubbo.consumer.timeout=10000
dubbo.application.name=user-server