2021年8月15日21:28:05:更新,配置文件新增解释
1.公共模块
注意:实体类必须实现序列化接口
public class User implements Serializable
公共类中写需要dubbo管理和调用的接口
public interface UserService {
User findById(Integer id);
}
2.服务提供者
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
//公共模块的依赖
<dependency>
<groupId>org.example</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
核心在于@Service注解,使用的是dubbo的注解。
把UserServiceImpl暴露给dubbo给其他微服务调用,服务提供者代码
@Service
public class UserServiceImpl implements UserService {
@Override
public User findById(Integer id) {
final User user = new User();
user.setId(id);
user.setName("虚假的名字");
return user;
}
}
配置文件
dubbo:
scan:
base-packages: maosi.service
//扫描有service的dubbo包
protocol:
name: dubbo
port: -1
//代表使用默认接口20880
registry:
address: spring-cloud://192.168.10.1 接口地址为nacos服务治理中心的地址
3.服务消费者
依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
//公共模块的依赖
<dependency>
<groupId>org.example</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
配置文件
dubbo:
registry:
address: spring-cloud://192.168.10.1
cloud:
subscribed-services: service1 //服务中心的服务名,服务提供者的名字,服务生产者的微服务名称
先引入依赖
然后调用类,其中@Reference是调用的关键还可以控制版本号和其他。可以看我的另一篇文章
@Reference
UserService userService;
直接调用
@GetMapping("/userService")
public User userService() {
final User user = userService.findById(1);
return user;
}
4.启动顺序
需要先启动服务提供者
再启动服务消费者
5.注册中心有dubbo的信息代表启动成功

Comments | NOTHING