dubbo和spring boot整合简约版(xml和annotation)

来源:互联网 发布:制作视频字幕软件 编辑:程序博客网 时间:2024/05/18 05:33

spring boot 和 dubbo 整合 xml + annotation 版本

(感觉好像是spring 与dubbo之间的整合)
provider要点:
1. dubbo.properties 配置dubbo的各种参数 application, registry.addres
dubbo.provider.xml 这里就是使用<dubbo: .../> 标签来导入dubbo.properties中的参数,并输出provider 实例

<dubbo:application name="${dubbo.application.name}"/>    <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}"/>    <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}"/>    <dubbo:service interface="com.zhb.app.dubbo.Hello" ref="helloImpl"/>

其中 helloImpl是在代码里面,使用annotation定义的实例。
2. spring boot中使用 下面的annotation 引入配置文件

@Configuration@PropertySource("classpath:dubbo/dubbo.properties")  @ImportResource({ "classpath:dubbo/*.xml" }) public class DubboConfig {}

接下来
3. build.gradle 定义的第三方Jar, 除了spring boot的相关的
还有:dubbo 和 zkclient,zkclient如果没有,项目启动会报错的。暂时不知道为何需要。还有consumer和provider两端共有的api jar

consumer 要点
1. dubbo.properties 减少暴露服务方式的配置
dubbo-consumer.xml

<!-- 提供方应用信息,用于计算依赖关系 -->      <dubbo:application name="${dubbo.application.name}" />      <!-- 注册中心暴露服务地址 -->     <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />        <dubbo:reference id="helloImpl" interface="com.zhb.app.dubbo.Hello" />  

然后再代码里面 @autowire
2. annotation 引入配置文件 同上。
3. build.gradle 同上

spring boot 和 dubbo 整合 纯annotation 版本

provider要点:
1. 使用annotation引入参数,
dubbo.annotation.package 这个参数比较重要,设置使用annotation扫描
使用AnnotationBean,ApplicationConfig 等bean来注入dubbo的参数。

@Configuration@ConditionalOnClass(Exporter.class)@PropertySource(value = "classpath:dubbo/dubbo.properties")public class DubboConfiguration {    @Value("${dubbo.application.name}")    private String applicationName;   @Bean    public static AnnotationBean annotationBean(@Value("${dubbo.annotation.package}") String packageName) {        AnnotationBean annotationBean = new AnnotationBean();        annotationBean.setPackage(packageName);        return annotationBean;    }

后面的代码省略。。。。。
2. 使用spring的@Component和dubbo的@Service来提高一个示例

@Component@Service(version="1.0.0")public class HelloImpl implements Hello{    private static final Logger LOGGER = LoggerFactory.getLogger(HelloImpl.class);    @Override    public String sayHello(String name) {        LOGGER.info("recevie invoke," + name);        return "hello world," + name;    }}

接下来
3. 之前的provider.xml以及相关的类就可以不用了,其他的配置不变

consumer要点:
1. 使用annotation引入参数, 和上面的相似,但是要去除ProtocolConfig配置,并且把providerConfig改为consumerConfig,其他的保持不变
2. 使用dubbo 的reference注解引入示例

@Reference(version = "1.0.0")    private Hello hello;

直接使用即可
3. 之前的consumer.xml以及相关的类就可以不用了,其他的配置不变

最后加上build.gradle 配置文件

import java.lang.invoke.LambdaForm.Compiled;buildscript{    ext{        springBootVersion = '1.3.5.RELEASE'    }    repositories {        mavenCentral()    }    dependencies {        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")    }}apply plugin: 'java'apply plugin: 'eclipse'apply plugin: 'spring-boot'springBoot {    backupSource = false    mainClass = 'com.zhb.app.PortalApplication'}jar {    baseName = 'springBootTest'    version =  '0.0.1-SNAPSHOT'}//apply plugin: 'application'//applicationDefaultJvmArgs = ['-javaagent:E:\\xgsdk\\commonLib\\springloaded-1.2.5.RELEASE.jar -noverify']repositories {    mavenCentral()}dependencies {    compile fileTree(dir: "libs", include: "*.jar")    compile "org.springframework.boot:spring-boot-starter-web"    compile(            "com.alibaba:fastjson:1.2.4",            "commons-codec:commons-codec:1.5",            "org.apache.commons:commons-lang3:3.3.2",            "com.alibaba:dubbo:2.5.6"    )    compile("com.github.sgroschupf:zkclient:0.1")    {        exclude group: 'org.slf4j'    }    testCompile("org.springframework.boot:spring-boot-starter-test")}
原创粉丝点击