注意:Git地址上的项目与本文章有差同,请参照文章与Git。
注意:Git地址上的项目与本文章有差同,请参照文章与Git。
项目结构(这是个父子项目)
还是解析下:
- demo-dubbo-xml是父项目
- dubbo-api是Service接口(如果您们要问:为什么我要把Service接口与Service实现类分开。对不起,个人喜好)
- dubbo-provider 是服务提供者
- dubbo-consumer 是服务消费者
父项目(demo-dubbo-xml)
pom.xml 添加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-starter -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-framework -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.5</version>
<type>pom</type>
</dependency>
<!-- 出现service为null:根本原因是导包错误,导致dubbo和springboot没有集成成功-->
<dependency>
<groupId>io.dubbo.springboot</groupId>
<artifactId>spring-boot-starter-dubbo</artifactId>
<version>1.0.0</version>
</dependency> |
dubbo-api所需更改:
DemoUser |
public class DemoUser implements Serializable {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public DemoUser() {
}
public DemoUser(Long id, String name) {
this.id = id;
this.name = name;
}
} |
DemoService |
public interface DemoService {
List<DemoUser> listUser();
} |
dubbo-provider所需更改:
pom.xml |
<parent>
<groupId>com.ving</groupId>
<artifactId>demo-dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> |
DemoServiceImpl |
import com.alibaba.dubbo.config.annotation.Service;
import com.example.dubboapi.DemoService;
import com.example.dubboapi.DemoUser;
import java.util.ArrayList;
import java.util.List;
@Service
public class DemoServiceImpl implements DemoService {
@Override
public List<DemoUser> listUser() {
List<DemoUser> list = new ArrayList<>();
list.add(new DemoUser(1L, "One - A"));
return list;
}
} |
application.properties |
spring.application.name=dubbo-provider
server.port=9091
# Dubbo 注册中心配置类
# 指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
dubbo.application.name=dubbo-provider
# 指定注册中心的位置
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 模块版本
dubbo.server=1.0.0
# 传输协议的名称(常见的传输协议:Dubbo、RMI、Hessain、WebService、Http)
dubbo.protocol.name=dubbo
# 用dubbo协议在20880端口暴露服务
dubbo.protocol.port=20881
# 这是你的接口和实现类的父级接口,确保springboot可以扫描到这俩就行
spring.dubbo.scan=com.example.dubboprovider
|
Application |
就是SpringBoot的启动类 添加注解让SpringBoot启动时读取Dubbo配置文件 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class DubboProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DubboProviderApplication.class, args);
}
} |
dubbo-consumer所需更改:
pom.xml |
<parent>
<groupId>com.ving</groupId>
<artifactId>demo-dubbo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>dubbo-api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies> |
DemoController |
import com.alibaba.dubbo.config.annotation.Reference;
import com.example.dubboapi.DemoService;
import com.example.dubboapi.DemoUser;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class DemoController {
@Reference
private DemoService service;
@RequestMapping("/hello")
public List<DemoUser> hello() {
return service.listUser();
}
} |
application.properties |
spring.application.name=dubbo-consumer
server.port=9001
# Dubbo 注册中心配置类
# 指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名)
dubbo.application.name=dubbo-consumer
# 指定注册中心的位置
dubbo.registry.address=zookeeper://127.0.0.1:2181
# 模块版本
dubbo.server=1.0.0
# 传输协议的名称(常见的传输协议:Dubbo、RMI、Hessain、WebService、Http)
dubbo.protocol.name = dubbo
# 用dubbo协议在20880端口暴露服务
#dubbo.protocol.port = 20880
|
Application |
就是SpringBoot的启动类 添加注解让SpringBoot启动时读取Dubbo配置文件 import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class DubboConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DubboConsumerApplication.class, args);
}
}
|
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)