您的位置:首页 > 编程语言 > Java开发

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

2017-10-21 18:02 881 查看

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")
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dubbo