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