1,先写一个接口
1.1:导入依赖
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
1.2:写好实体类,写好接口
实体类:
@Data
@EqualsAndHashCode
//@AllArgsConstructor
public class User implements Serializable {
private String name;
}
接口:
package com.addservice.service;
import com.addservice.pojo.User;
import java.util.List;
public interface AddService {
List<User> getAll();
}
2.开始写生产者
2.1 先导入依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>producter</artifactId>
<dependencies>
<!-- 服务提供的的接口-->
<dependency>
<groupId>com.mscy</groupId>
<artifactId>addservice</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions><!-- 去掉默认配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- dubbo-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
2.2 开始写配置文件 application.properties
#服务名称
dubbo.application.name=provider1
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#注册中心类型
dubbo.registry.protocol=zookeeper
#版本号
dubbo.application.version=3
# Dubbo Protocol
#协议名称
dubbo.protocol.name=dubbo
#服务暴露端口
dubbo.protocol.port=20880
server.port=8088
2.3 开始写一个类 并且继承 1 写的接口
package com.productor.service.impl;
import com.addservice.pojo.User;
import com.addservice.service.AddService;
import com.alibaba.dubbo.config.annotation.Service;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.List;
@Service(version = "3")
@Component
public class ProductorServiceImpl implements AddService {
@Override
public List<User> getAll() {
User user1 = new User();
user1.setName("王思聪");
User user2 = new User();
user2.setName("狄仁杰");
List<User> users = Arrays.asList(user1, user2);
return users;
}
}
这里的@service 注解 别导错包了
( import com.alibaba.dubbo.config.annotation.Service;)
2.4 创建一个启动类
package com.productor;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableDubbo
@SpringBootApplication
public class ProductorAoolication {
public static void main(String[] args) {
SpringApplication.run(ProductorAoolication.class,args);
}
}
3 开始创建消费者
3.1 导入消费者依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>consumer</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- dubbo-->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<!-- 引入接口服务-->
<dependency>
<groupId>com.mscy</groupId>
<artifactId>addservice</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
3.2 application.properties配置文件 配置消费者
#注册中心
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
#dubbo应用名称
dubbo.application.name=consumer1
server.port=8888
3.3 创建一个控制器 并注入接口
import com.addservice.pojo.User;
import com.addservice.service.AddService;
import com.alibaba.dubbo.config.annotation.Reference;
import com.consumer.service.consumerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class consumerController {
@Autowired
private consumerService consumerService;
@Reference(version = "3")
private AddService addService;
@ResponseBody
@RequestMapping("/add")
public List<User> getAll(){
return addService.getAll();
}
}
3.4 创建启动类
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@EnableDubbo
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
4 之后先启动zookeeper
5 启动 Tomcat里面的dubbo-admin
输入:http://localhost:8080/
6 在途中会遇到一些 包冲突 编辑时找不到类等问题。应该是需要注意dubbo的版本
7 记录一个日志冲突
解决方法:
我上面的代码是解决之后的代码 (无需再重复操作)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions><!-- 去掉默认配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>