发表于: 2020-02-27 20:29:23
2 1031
啥也不说就是干!!
今天完成的事情:
1、dubbo 的注解配置
服务提供者 applicaion.yml 文件配置变化
相比多了一个 scan 配置,指定扫描需要暴露的 service 所在包名
服务提供者 service 实现类
现在需要将 @Service 由 Spring 框架的注解改为 dubbo 框架下的注解(可以配置 service 相关的属性如 version)
当然在 ProviderApplication 中也无需在引入 dubbo.xml 配置文件
@SpringBootApplication
public class ProviderApplication {
public static void main(String[] args){
SpringApplication.run(ProviderApplication.class);
}
}
服务消费者需要使用 @Reference 来引用到服务提供者暴露的接口实现
启动服务提供者和服务消费者,可以看到调用正常
在开发过程中还是推荐使用 xml 配置文件的形式
主要原因是,@Reference 注解,每次引用服务的时候,都需要在注解上添加好多配置的属性。这样,服务的引用的配置后就散落到各个类里了。
2、dubbo 参数校验
在 Service-API 模块加上校验框架,相关依赖如下
<!-- 参数校验相关依赖 -->
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId> <!-- JSR 参数校验规范 API -->
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId> <!-- JSR 参数校验规范实现,我们使用 hibernate-validator -->
<version>6.0.18.Final</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId> <!-- 可能涉及到 EL 表达,所以引入,否则 hibernate-validator 在初始化会报错 -->
<version>3.0.1-b11</version>
</dependency>
在入参上面加上校验条件
在服务提供者 service-provider 和服务消费者 service-consumer 的 dubbo.xml 配置中都打开 validation 开关
然后在测试方法中调用方法进行测试(方法入参传空)
@Override
public void run(String... args) throws Exception {
try {
UserDTO user = userRpcService.get(null);
logger.info("[run][发起一次 Dubbo RPC 请求,获得用户为({})", user);
}catch (Exception e){
logger.error("[run][获得用户发生异常,信息为:[{}]", e.getMessage());
}
}
控制台看到有异常信息的打印
明天计划的事情:
将 任务8 中的 spring-rmi 远程服务调用改为 dubbo 实现
遇到的问题:
暂无
评论