使用dubbo服务的过程,很简单,和之前学习的WebService完全一样,和本地接口调用也基本一致。
dubbo和WebService的区别:我认为dubbo就是封装了WebService,然后提供了更多的配套功能。看jar包依赖,dubbo依赖的WebService。(青出于蓝,而胜于蓝。冰,水为之,而寒于水。)
dubbo接口和本地service接口的区别:dubbo调用的是远程方法,本地调用的本地方法
作为服务的实现方,或者说最初负责“服务化改造” 的人来说,你需要考虑到怎么简化调用方的工作,怎么测试服务方的接口。因此, 我认为需要4个项目。
1.接口项目-调用者只需要知道这个
服务调用方和服务提供方的交互接口。
定义服务的接口,公共的mobel、bean等实体类。
BrandService.java,Brand.java,BrandBean.java
dubbo服务配置:
2.接口实现项目-服务的实现者
BrandServiceImpl.java
其它相关代码和配置
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 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
个人观察:面向接口编程。接口调用方,只知道接口,而不知道实现, 真是不错。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net