Spring篇】五. Spring整合Dubbo

中国加油,武汉加油!

篇幅较长,配合目录观看

1. 新建spring-dubbo

1.1 删掉src做站点工程

2. 新建spring-dubbo-api(module-maven)

2.1 编写Service接口

package com.wpj.service;

public interface IUserService {
    public String addUser(String username);
}

3. 新建spring-dubbo-iml(module-maven)

3.1 导包

<dependencies>
	<dependency>
		<groupId>com.wpj</groupId>
		<artifactId>spring-dubbo-api</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>
	<!--引入dubbo的依赖-->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>dubbo</artifactId>
		<version>2.5.8</version>
	</dependency>
	<!-- zookeeper客户端依赖 -->
	<dependency>
		<groupId>com.github.sgroschupf</groupId>
		<artifactId>zkclient</artifactId>
		<version>0.1</version>
	</dependency>
</dependencies>

3.2 编写ServiceImpl实现类

package com.wpj.service.impl;

import com.wpj.service.IUserService;

public class UserServiceImpl implements IUserService {
    public String addUser(String username) {
        System.out.println("username = " + username);
        return username;
    }
}

3.3 编写bean.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:application name="user-service"/>
    <!-- 注册中心地址 -->
    <dubbo:registry address="zookeeper://192.168.59.100:2181"/>
    <!-- 端口号-->
    <dubbo:protocol port="-1"/>
    <!-- 配置实现 -->
<!--    <bean class="com.wpj.service.impl.UserServiceImpl" id="userService"/>-->
<!--    <dubbo:service interface="com.wpj.service.IUserService" ref="userService"/>-->
    <!-- 注解实现-->
    <dubbo:annotation package="com.wpj.service"/>
</beans>

4. 发布服务

4.1 Test

package com.wpj.service.test;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

public class ProviderTest {

    public static void main(String[] args) throws IOException {
        // 初始化Spring容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:beans.xml");
        // 按任意键退出
        System.in.read();
    }
}

5. 调用服务

5.1 新建spring-dubbo-web(module-maven)

5.2 导包

<!--引入dubbo的依赖-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.5.8</version>
</dependency>
<!-- zookeeper客户端依赖 -->
<dependency>
    <groupId>com.github.sgroschupf</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.1</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>4.3.10.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.3.10.RELEASE</version>
</dependency>

5.3 编写beans.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:application name="user-web"/>
    <!-- 注册中心地址 -->
    <dubbo:registry address="zookeeper://192.168.59.100:2181"/>
    <!-- 消费者配置 -->
    <dubbo:consumer cache="false" retries="3" />
    <!-- 生成远程服务代理,可以跟本地bean一样使用UserService -->
    <dubbo:reference interface="com.wpj.service.IUserService" id="userService"/>
</beans>

5.4 Test

package com.wpj;

import com.wpj.service.IUserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "classpath:beans.xml")
public class ConsumerTest {
    @Autowired
    private IUserService userService;

    @Test
    public void testAddUser() throws Exception{
        System.out.println(userService.addUser("admin"));
    }
}
发布了126 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/TheNew_One/article/details/105199578