今天就跟大家聊聊有关杜布的使用分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
一、背景
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行。
当越来越的的接口与实现类的增加后,杜布的可扩展标记语言配置会越来越多,为了防止几百几千行的代码,减少开发人员配置可扩展标记语言的工作量,使用杜布的注解模式,减少配置多出问题多的可能性!
二、杜博使用案例
杜布注解
接口类项目:DubboServiceInterface
仅仅是一个接口类项目!接口是普通接口!
注意:将接口类项目打包成冲突分别放入服务端项目跟客户端项目!
服务端项目:DubboServiceProvider
实现类fooserviceImpl.java
包裹。阿里巴巴。杜博。演示。小鬼;
导入com。阿里巴巴。杜博。配置。注释。服务;
进口。com。阿里巴巴。杜博。演示。演示服务;
@Service(版本='1.0 ')
公共类foowserviceimpl实现了DemoService {
@覆盖
公共字符串说你好(字符串名称){ 0
返回"你好"名称;
}
}
web.xml配置扫描内容
?可扩展标记语言版本='1.0 '编码='UTF-8 '?
web-app xmlns : xsi=' http://www。w3。org/2001/XMLSchema-实例' xmlns=' http://Java。星期日com/XML/ns/javaee ' xmlns : web=' http://Java。星期日com/XML/ns/javaee/web-app _ 2 _ 5。xsd ' xsi : schema location=' http://Java。星期日com/XML/ns/ns
显示名称dubboserviceprovider/显示名称
小型应用程序
servlet-name spring/servlet-name servlet-class org。弹簧框架。网络。servlet。dispatchersvlet/servlet类
启动时加载1/启动时加载
/servlet
小型应用程序映射
servlet-name spring/servlet-name
全球资源定位器(Uniform Resource Locator)模式*/url模式
/servlet-mappingnbs
p;
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext.xml</param-value>
</context-param>
</web-app>
applicationContext.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 服务端- 服务提供方 -->
<!-- 公共信息,也可以用dubbo.properties配置 -->
<dubbo:application name="test" />
<!-- 链接zookeeper -->
<dubbo:registry address="zookeeper://127.0.0.1:2181/" group="test"/>
<dubbo:consumer timeout="5000"/>
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<dubbo:annotation package="com.unj.dubbotest.serviceImp" />
<!-- xml配置 : 声明需要暴露的服务接口 -->
<!-- <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" /> -->
<!-- xml配置 :和本地bean一样实现服务-->
<!-- <bean id="demoService" class="com.unj.dubbotest.serviceImp.FooServiceImpl" /> -->
</beans>
测试类Provider
package com.alibaba.dubbo.test;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Provider {
@Before
public void setUp() throws Exception {
}
@Test
public void testMain() throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
new String[] { "applicationContext.xml" });
context.start();
System.in.read();// 按任意键退出
}
}
lib下的jar包
客户端项目:DubboServiceConsumer
web.xml 配置扫描内容
applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo
http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 客户端- 服务消费方 -->
<!-- 公共信息,也可以用dubbo.properties配置 -->
<dubbo:application name="xx" />
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<dubbo:consumer timeout="5000"/>
<!-- 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 -->
<dubbo:annotation package="com.unj.dubbotest.action" />
</beans>
测试类:Consumer
package com.unj.dubbotest.action;
import java.io.IOException;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.demo.DemoService;
public class Consumer{
@Reference(version = "1.0")
private DemoService demoService;
@Test
public void mainTest() throws IOException {
ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext(
new String[] {"applicationContext.xml"});
context.start();
demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理
String hello = demoService.sayHello("world"); // 执行远程方法
System.out.println( hello ); // 显示调用结果
}
}
lib下的jar包
看完上述内容,你们对duboo的使用分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81173.html