Springboot整合Dubbo - 代碼集成和發(fā)布(二)

1. boot-dubbo-api相關(guān)

打開boot-dubbo-api項目,正在src/main/java下創(chuàng)建一個包,并創(chuàng)建你需要dubbo暴露的接口TestService.java,并創(chuàng)建一個實體類用于測試User.java。如下圖所示:

創(chuàng)建文件和包結(jié)構(gòu)

User.java

package com.boot.domain;

import lombok.Data;

import java.io.Serializable;

@Data
public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private Integer gender;
}

TestService.java

package com.boot.service;

import com.boot.domain.User;

public interface TestService {

    String sayHello(String str);

    User findUser();
}

2. boot-dubbo-provider相關(guān)

首先我們先看看總共需要編寫的內(nèi)容,文件的層次結(jié)構(gòu)圖

boot-dubbo-provider項目結(jié)構(gòu)圖

第一步:我們首先實現(xiàn)我們在boot-dubbo-api上定義的接口,創(chuàng)建一個TestServiceImpl類并實現(xiàn)TestService

package com.boot.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.boot.domain.User;
import com.boot.service.TestService;

import java.text.SimpleDateFormat;
import java.util.Date;

@Service(version = "1.0.0")
public class TestServiceImpl implements TestService {

    @Override
    public String sayHello(String str) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return dateFormat.format(new Date()) + ": " + str;
    }

    @Override
    public User findUser() {
        User user = new User();
        user.setId(1001);
        user.setUsername("scott");
        user.setPassword("tiger");
        user.setAge(20);
        user.setGender(0);
        return user;
    }
}

注意:代碼里的@Service注解是com.alibaba.dubbo.config.annotation.Service的。

第二步:在resources下創(chuàng)建一個config文件夾,在config下創(chuàng)建spring-dubbo.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="provider"/>
    <!-- 注冊中心的ip地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <!-- 掃描注解包路徑,多個包用逗號分隔,不填pacakge表示掃描當(dāng)前ApplicationContext中所有的類 -->
    <dubbo:annotation package="com.boot.service.impl"/>
</beans>

第三步:在com.boot包下新建Springboot的入口類,創(chuàng)建一個ProviderApplication.java文件。

package com.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

import java.io.IOException;

@SpringBootApplication
@ImportResource({"classpath:config/spring-dubbo.xml"})
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
        try {
            System.in.read();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

第四步:最后在resources文件夾下面創(chuàng)建application.yml,Springboot的配置文件。

# 在這里編寫springboot的配置信息

3. boot-dubbo-consumer相關(guān)

首先我們先看看總共需要編寫的內(nèi)容,文件的層次結(jié)構(gòu)圖


boot-dubbo-consumer項目結(jié)構(gòu)圖

第一步:編寫我們的Controller控制類,在com.boot.controller包下新建一個TestController類,編寫訪問地址。

package com.boot.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.boot.domain.User;
import com.boot.service.TestService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class TestController {
    @Reference(version = "1.0.0")
    private TestService testService;

    @GetMapping("hello")
    public String hello() {
        return testService.sayHello("Hello springboot and dubbo!");
    }

    @GetMapping("user")
    public User user() {
        return testService.findUser();
    }
}

第二步:在resources下創(chuàng)建一個config文件夾,在config下創(chuàng)建spring-dubbo.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="consumer"/>
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <dubbo:annotation package="com.boot.controller"/>
</beans>

第三步:在com.boot包下新建Springboot的入口類,創(chuàng)建一個ConsumerApplication.java文件。

package com.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource({"classpath:config/spring-dubbo.xml"})
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

第四步:最后在resources文件夾下面創(chuàng)建application.yml,Springboot的配置文件。

# 在這里編寫springboot的配置信息
server:
  port: 8080
  context-path: /

至此,代碼部分已經(jīng)編寫完畢?。。?/p>

4. 安裝zookeeper注冊中心到電腦中

下載地址:zookeeper下載地址
點擊后下載適合自己的版本,如圖所示

zookeeper的下載

下載完畢后,解壓縮該文件,進(jìn)入conf文件夾,拷貝一份zoo_sample.cfg,在該目錄生成zoo.cfg文件。
拷貝生成zoo.cfg文件

進(jìn)入bin目錄,運行zkServer.cmd文件。
運行zkServer.cmd

點擊運行后出現(xiàn)如下圖所示

運行成功

5. 現(xiàn)在終于可以運行我們的項目了

先運行我們的ProviderApplication.java文件的main函數(shù),再運行ConsumerApplication.java文件的main函數(shù)。
打開瀏覽器訪問
http://localhost:8080/hello
http://localhost:8080/user
好了,激動人心的時刻到了,我們終于完成了Springboot和Dubbo的集成了。
項目地址:springboot-dubbo項目GitHub地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容