1. 程式人生 > >dubbo簡單環境搭建

dubbo簡單環境搭建

out ide ren lns control XML final version port

簡單環境搭建

搭建工具

jdk1.8+idea+maven+spring

構建多模塊

技術分享圖片

dubbo_par 父模塊

  父模塊中pom.xml引入dubbo坐標

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>

dubbo_api 服務公共接口

  實體類 簡單模擬數據庫

public class User implements Serializable {
    private static final long serialVersionUID = -6267484068304517004L;

    private Integer userId;
    private String uname;
} 

  定義服務接口

public interface IUserService {
  //通過id 查詢用戶 public User queryUserById(Integer userId); }

dubbo_provider 服務提供方

  pom.xml中引入公共服務接口坐標

 <!--引入公共接口坐標-->
 <dependency>
       <groupId>com.shsxt</groupId>
       <artifactId>dubbo_demo_api</artifactId>
       <version>1.0-SNAPSHOT</version>
 </dependency>

  

  配置provider.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       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
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">
    <!--自動掃描-->
    <context:component-scan base-package="com.xpx.provider"></context:component-scan>

    <!--dubbo配置-->
    <!--配置名稱-->
    <dubbo:application name="dubbo_provider"></dubbo:application>
    <!--multicast 註冊中心 address="multicast://224.5.6.7:1234" 廣播地址 接受廣播來實現服務註冊-->
    <dubbo:registry address="multicast://224.5.6.7:1234"></dubbo:registry>
    <!--配置協議 20880dubbo的默認端口-->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    <!--配置註冊服務-->
    <dubbo:service interface="com.xpx.api.service.IUserService" ref="userServiceImpl"></dubbo:service>
</beans>

  服務接口實現

@Service
public class UserServiceImpl implements IUserService {

    private Map<Integer,User> users ;

    public UserServiceImpl() {
        users = new HashMap<>();
        users.put(1,new User(1,"dubbo"));
    }

    @Override
    public User queryUserById(Integer userId) {
        return users.get(userId);
    }
}

  測試提供服務方

public class Publisher {
    public static void main(String args[]) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
        context.start();
        System.in.read();
    }
}

dubbo_consumer 消費服務方

  pom.xml中引入公共服務接口坐標

 <!--引入公共接口坐標-->
 <dependency>
       <groupId>com.shsxt</groupId>
       <artifactId>dubbo_demo_api</artifactId>
       <version>1.0-SNAPSHOT</version>
 </dependency>

  配置consumer.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應用名稱-->
    <dubbo:application name="dubbo_consumer"></dubbo:application>
    <!--註冊中心 address="multicast://224.5.6.7:1234" 廣播地址 接受廣播來實現服務註冊-->
    <dubbo:registry address="multicast://224.5.6.7:1234"></dubbo:registry>
    <!--配置訂閱的服務-->
    <dubbo:reference interface="com.xpx.api.service.IUserService" id="userService"></dubbo:reference>
    <bean class="com.xpx.consumer.controller.UserController" id="userController">
        <property name="userService" ref="userService"></property>
    </bean>
</beans>

  controller

public class UserController {
    private UserService userService;

//    沒有配置自動掃描用set註入
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    public User querUserById(Integer userId){
        return userService.queryUserById(userId);
    }
}

  測試

public class TestConsumer {
    public static void main(String args[]){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
        UserController userController = (UserController) applicationContext.getBean("userController");
        User user = userController.querUserById(1);
        System.out.println(user);
    }
}

  結果成功

User{id=1, uname=‘dubbo‘}

dubbo簡單環境搭建