SpringBoot整合dubbo实例


一、zookeeper环境的安装

  下载地址:https://downloads.apache.org/zookeeper/zookeeper-3.6.1/

  

 下载成功放到/usr/local/src  ,执行以下命令

tar -zxvf     apache-zookeeper-3.6.1-bin.tar.gz

mv  apache-zookeeper-3.6.1-bin.tar.gz   zookeeper

    配置环境变量:在/etc/profile最后添加(zookeeper 安装路径在/usr/local/src/zookeeper)

export ZOO_HOME=/usr/local/src/zookeeper
export PATH=$ZOO_HOME/bin:$PATH

 切换到/usr/local/src/zookeeper/conf目录下:执行以下命令

cp    zoo_sample.cfg   zoo.cfg

 修改zoo.cfg文件(要在zookeeper目录创建data  log文件夹),修改对应标红位置

 

 

 最后启动zookeeper,切换到bin目录  

./zkServer.sh start

二、SpringBoot模块

  1、首先创建父工程,主要是引入一些jar 

    创建Maven Project

    

    下一步

   

  pom文件(部分jar用不到本demo):

      

        <!--springBoot动态的引入springMVC全部的配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>1.5.4.RELEASE</version>
            
        </dependency>
        
        <!-- 引入aop支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        
        <!--引入测试类 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--添加属性注入依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

        <!--支持热部署 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <!--引入插件lombok 自动的set/get/构造方法插件 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--引入数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
            <scope>runtime</scope>
        </dependency>

        <!--引入druid数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.12</version>
        </dependency>

        <!--spring整合mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>

        <!--springBoot整合JSP添加依赖 -->
        <!--servlet依赖 注意与eureka整合时的问题 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>
        <!--jstl依赖 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <!--使jsp页面生效 -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <!--添加httpClient jar包 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>        
        <!--引入dubbo配置 -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>
        
              <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.13</version>
            <type>pom</type>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

2、创建生产者、消费者共用的接口

  (1)在父工程dubbo-parent右键创建maven moudle工程

    

   下一步: 

  

 标红部分说明是web项目

  

创建成功后目录结构如下:

    

 

 

3、创建生产者dubbo-provide

  注意此项目要把依赖dubbo-common,因为要实现其接口(pom.xml文件要引入dubbo-common依赖)    

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>dubbo.parent</groupId>
    <artifactId>dubbo-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>dubbo.parent</groupId>
  <artifactId>dubbo-provide</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>dubbo-provide Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
       <dependency>
        <groupId>dubbo.parent</groupId>
        <artifactId>dubbo-common</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>

  </dependencies>
  <build>
    <finalName>dubbo-provide</finalName>
  </build>
</project>

 

  (1)项目创建同dubbo-common一样

  结构如下:

  

  (2)application.properties文件内容    

#编辑dubbo配置
dubbo.application.name=provide
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.registry.protocol=zookeeper
dubbo.protocol.name:dubbo
dubbo.protocol.prot:20880
server.port=8090

     (3)接口实现LoginServiceImpl(注意@service注解是dubbo框架的) 

import com.alibaba.dubbo.config.annotation.Service;
import com.service.LoginService;

@Service
public class LoginServiceImpl implements LoginService{

    @Override
    public String login() {
        return "Login Success";
    }

}

  (4)启动类  

    使用@EnableDubbo、@DubboComponentScan(刚开始在配置文件配置报扫描一直不生效,就切换此方法) 

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@EnableDubbo
@DubboComponentScan
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
public class ProvideApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(ProvideApplication.class , args);
    }
}

4、消费者创建dubbo-consumer同步骤3生产者的创建(pom.xml文件引入dubbo-commo依赖同上)

  

  (1)目录结构如下

    

  (2)controller代码部分

    

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.dubbo.config.annotation.Reference;
import com.service.LoginService;

@RestController
@RequestMapping("/user/")
public class LoginController {
    @Reference(check=true)
    LoginService loginService;
    
    @RequestMapping("login")
    public String login() {
        return loginService.login();
    }
    

}

(3)application.properties文件

  

server.port=8091

dubbo.application.name=consumer
dubbo.registry.address=zookeeper://127.0.0.1:2181

(4)启动类

  

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

import com.alibaba.dubbo.config.spring.context.annotation.DubboComponentScan;
import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo;
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
//@EnableDubbo
//@DubboComponentScan
public class ConsumerApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }

}

 

 

5、测试分别启动生产者、消费者(注意zookeeper要开启)

  启动成功如下:

  

   访问消费者:http://localhost:8091/user/login

  

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM