一个电商项目的Web服务化改造7 Dubbo服务的调用,4个项目

               
使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致。

     dubbo和WebService的区别 :我认为dubbo就是封装了WebService,然后提供了更多的配套功能。看jar包依赖,dubbo依赖的WebService。( 青出于蓝,而胜于蓝。冰,水为之,而寒于水。 )
    dubbo接口和本地service接口的区别:dubbo调用的是远程方法,本地调用的本地方法


    作为服务的实现方,或者说最初负责“服务化改造” 的人来说,你需要考虑到怎么简化调用方的工作,怎么测试服务方的接口。因此, 我认为需要4个项目。

1.接口项目-调用者只需要知道这个
   服务调用方和服务提供方的交互接口。
   定义服务的接口,公共的mobel、bean等实体类。
   BrandService.java,Brand.java,BrandBean.java
  
   dubbo服务配置:  
  <dubbo:reference id="brandService" interface="com.webservice.service.front.BrandService" version="1.0.0"
        url="webservice://127.0.0.1:9000/com.webservice.service.front.BrandService"/>
 
2.接口实现项目-服务的实现者 
   BrandServiceImpl.java
   其它相关代码和配置
   <bean id="brandService" class="com.webservice.service.impl.BrandServiceImpl"/>
        
 <dubbo:service interface="com.webservice.service.front.BrandService" version="1.0.0"
        protocol="webservice" ref="brandService"/>
 
3.本地测试项目 
   单元测试:mapper、dao、service
   参考前一篇的单元测试代码,初始化+标准4步

4.dubbo远程测试项目 
    单元测试:service(不可能知道dao和mapper的实现),参考上一篇单元测试代码
    Java应用测试:service,调用方也可能是普通的Java应用程序调用(模拟真实场景1)
   Web应用测试:  service,调用方,有较大可能是Web项目调用(模拟真实场景2)

 
 public class BrandServiceTest public static void main(String[] args) {  String configLocation = "classpath*:spring-context-nodubbo.xml";  configLocation = "spring-context-dubbo.xml";  ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext(    configLocation);  classPathXmlApplicationContext.start();  BrandService brandService = (BrandService) classPathXmlApplicationContext    .getBean("brandServiceImpl");  //BrandService brandService = (BrandService) classPathXmlApplicationContext   // .getBean(BrandService.class);  //找不到,名字是brandServiceImpl,或者根据类型  //BrandService brandService = (BrandService) classPathXmlApplicationContext  //  .getBean("brandService");  List<Brand> brandList = brandService.listAll();  for (Brand brand : brandList) {   System.out.println("=====================================");   System.out.println(brand.getName());   System.out.println("=====================================");  }  classPathXmlApplicationContext.close(); }} 



@Controller@RequestMapping("brand")public class BrandController @Autowired private BrandService brandService;  @ResponseBody @RequestMapping("listAll"public List<Brand> listAll(){  return brandService.listAll(); } }

 
 个人观察:面向接口编程。接口调用方,只知道接口,而不知道实现, 真是不错。
           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值