02 dubbo系列 | 基于spring加载dubbo配置
前言
本文主要dubbo和spring的结合使用,在spring配置文件中配置dubbo的相关信息。
同时,本文代码基于01 dubbo系列 | dubbo快速入门。
环境
需要引入spring相关的依赖。
第一步:dubbo-demo-provider模块配置用spring暴露服务。
<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!--实现的服务-->
<bean id="demoServiceImpl" class="com.joyxj.dubbo.demo.provider.DemoServiceImpl" />
<bean id="userServiceImpl" class="com.joyxj.dubbo.demo.provider.UserServiceImpl" />
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="dubbo-demo-provider">
<!--在线运维命令配置-->
<dubbo:parameter key="qos.enable" value="true"/>
<dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
<dubbo:parameter key="qos.port" value="22222"/>
</dubbo:application>
<!--dubbo 注册中心-->
<dubbo:registry address="zookeeper://localhost:2181" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880"/>
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.joyxj.dubbo.demo.api.DemoService" ref="demoServiceImpl" />
<dubbo:service interface="com.joyxj.dubbo.demo.api.UserService" ref="userServiceImpl"/>
</beans>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
第二步:dubbo-demo-provider模块启动类。
package com.joyxj.dubbo.demo.provider;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
/**
* 基于spring的提供方启动类
*
* @author xiaoj
* @version 1.0
* @date 2019-04-18
*/
public class SpringProviderApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("application-provider.xml");
context.start();
try {
System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
第三步:dubbo-demo-consumer模块配置用spring调用远程服务。
<?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://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="dubbo-demo-cosumer" >
<dubbo:parameter key="qos.enable" value="true"/>
<dubbo:parameter key="qos.accept.foreign.ip" value="false"/>
<dubbo:parameter key="qos.port" value="33333"/>
</dubbo:application>
<!--dubbo 注册中心-->
<dubbo:registry address="zookeeper://localhost:2181" />
<dubbo:reference interface="com.joyxj.dubbo.demo.api.DemoService" id="demoService"/>
<dubbo:reference interface="com.joyxj.dubbo.demo.api.UserService" id="userService"/>
</beans>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
第四步:dubbo-demo-consumer模块启动类,加载spring配置和调用服务。
package com.joyxj.dubbo.demo.consumer;
import com.joyxj.dubbo.demo.api.DemoService;
import com.joyxj.dubbo.demo.api.UserService;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 基于spring的消费方启动类
*
* @author xiaoj
* @version 1.0
* @date 2019-04-18
*/
public class SpringConsumerApplication {
public static void main(String[] args) {
ClassPathXmlApplicationContext context =
new ClassPathXmlApplicationContext("application-consumer.xml");
DemoService demoService = (DemoService) context.getBean("demoService");
UserService userService = (UserService) context.getBean("userService");
System.out.println(demoService.sayHello("xiaojun"));
System.out.println(userService.getAge("xiaojun"));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
总结
本文主要是介绍了dubbo和spring的一个整合,官方推荐使用XML的方式,也就是基于spring的配置,同时这种方式也非常方便的进行本地开发调试。