首页 > 其他分享 >一个电商项目的Web服务化改造7:Dubbo服务的调用,4个项目

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

时间:2023-05-05 14:32:20浏览次数:50  
标签:Dubbo 调用 Web dubbo BrandService 接口 brandService classPathXmlApplicationContext 


使用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"/>

 

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

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(); } }

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


 

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

标签:Dubbo,调用,Web,dubbo,BrandService,接口,brandService,classPathXmlApplicationContext,
From: https://blog.51cto.com/fansunion/6245778

相关文章

  • 获取WebView发送给服务端的Accept-Language请求头
    1,WebView没有提供获取Accept-Language请求头的接口2,WebView的publicWebResourceResponseshouldInterceptRequest(WebViewview,WebResourceRequestrequest){}回调中WebResourceRequest不包含Accept-Language请求头,即使客户端向服务器端发送的请求中包含该请求头3,javascr......
  • jsp Web超大文件上传和断点续传的实现
    ​ 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传,从上传的效率来看,利用多线程并发上传能够达到最大效率。 本文是基于springboot+vue实现的文件上传,本文主要介绍服务端实现文件......
  • WebAPi实现多文件上传,并附带参数
    1、目的及需求需要实现的效果为,通过WebAPI实现多文件上传功能,并且在上传时需要能附带文件说明参数,用于保存文件记录 2、参数说明这里先说明以下需要的文件说明参数类///<summary>///前端文件上传时参数数据///</summary>publicclassDistributionDat......
  • Java Web超大文件上传和断点续传的实现
    ​前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有比......
  • 电商产品评论数据情感分析
    1.评论去重的代码,数据清洗、分词、词性标注、去除停用词代码。 importpandasaspdimportreimportjieba.possegaspsgimportnumpyasnp#去重,去除完全重复的数据reviews=pd.read_csv("./reviews.csv")reviews=reviews[['content','content_type']].drop_duplicate......
  • 关于Android studio的虚拟机Webview出现网页无法加载,显示net::ERR_NAMENOT_RESOLVED的
    一开始出现了这个错误net::ERR_CLEARTEXT_NOT_PERMITTED参考这三个文献,https://www.cnblogs.com/suhq/p/14414882.htmlhttps://blog.csdn.net/qq_59125846/article/details/121953461https://blog.csdn.net/weixin_43169336/article/details/128379580都试了一遍后,问题消失,......
  • 电商产品评论数据情感分析
    1、评论去重的代码importpandasaspdimportreimportjieba.possegaspsgimportnumpyasnp#去重,去除完全重复的数据reviews=pd.read_csv("./reviews.csv")reviews=reviews[['content','content_type']].drop_duplicates()content=reviews......
  • tomcat——创建MavenWeb项目
      ......
  • 记一道国际赛CTF web题
    这是一篇关于打d3ctf坐牢,无奈去打国际赛的题解。TAMUCTF[Blackbox]首先打开页面,然后发现一个登陆框 刚开始最先想到就是弱口令登陆,尝试几个后发现登陆不进去。之后我就换了一个思路,就是扫一下,看看能不能有什么东西被扫出来,结果还真扫出来点东西,一个flag.txt,一个flag.php,还......
  • WebSocket协议:5分钟从入门到精通
    一、内容概览WebSocket的出现,使得浏览器具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket如何建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御类似攻击的。二、什么是WebSocketHTML5开始提供的一种浏览器与服务......