SpringBoot整合dubbo(注解配置dubbo)

SpringBoot整合dubbo(注解配置dubbo)源码 GitHub https github com springboot learning tree master springboot dubbo01 准备 1 在服务器或者本地搭建好 zookeeper 具体可参考文章 https blog csdn net article details 在服务器或者本地搭建好 dubb

源码

GitHub:https://github.com//springboot-learning/tree/master/springboot-dubbo01

准备

代码

  • 新建空的maven工程,命名为springboot-dubbo01
<parent> <groupId>org.springframework.boot 
     groupId> <artifactId>spring-boot-starter-parent 
      artifactId> <version>2.0.0.RELEASE 
       version>  
        parent> <modules> <module>springboot-dubbo01-api-web 
         module> <module>springboot-dubbo01-service-impl 
          module> <module>springboot-dubbo01-service 
           module>  
            modules> 
  • 新建模块,命名为springboot-dubbo01–service

service主要是用来存放在实体类、Enum、工具类、service等

public interface DemoService { 
    public List<Message> findMessage(); } 

Message:

public class Message implements Serializable { 
    private int id; private String city; private String time; private String weather; public Message() { 
   } public int getId() { 
   return id;} public void setId(int id) { 
   this.id = id;} public String getCity() { 
   return city;} public void setCity(String city) { 
   this.city = city;} public String getTime() { 
   return time;} public void setTime(String time) { 
   this.time = time;} public String getWeather() { 
   return weather;} public void setWeather(String weather) { 
   this.weather = weather;} } 

ApiResponse:

public class ApiResponse implements Serializable { 
    private int code; private String msg; private Object data; public ApiResponse() { 
   } public ApiResponse(int code, String msg) { 
    this.code = code; this.msg = msg; } public ApiResponse(int code, String msg, Object data) { 
    this.code = code; this.msg = msg; this.data = data; } public int getCode() { 
   return code;} public void setCode(int code) { 
   this.code = code;} public String getMsg() { 
   return msg;} public void setMsg(String msg) { 
   this.msg = msg;} public Object getData() { 
   return data;} public void setData(Object data) { 
   this.data = data;} } 
  • 新建模块,命名为springboot-dubbo01-service-impl

service-impl主要是存放service接口实现类、持久层的实现

<parent> <groupId>com.wyj 
     groupId> <artifactId>springboot-dubbo01 
      artifactId> <version>0.0.1-SNAPSHOT 
       version>  
        parent> <dependencies>  
        <dependency> <groupId>org.mybatis.spring.boot 
         groupId> <artifactId>mybatis-spring-boot-starter 
          artifactId> <version>2.0.1 
           version>  
            dependency>  
            <dependency> <groupId>mysql 
             groupId> <artifactId>mysql-connector-java 
              artifactId> <scope>runtime 
               scope>  
                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-starter 
                      artifactId>  
                       dependency> <dependency> <groupId>org.springframework.boot 
                        groupId> <artifactId>spring-boot-starter-web 
                         artifactId>  
                          dependency>  
                          <dependency> <groupId>io.dubbo.springboot 
                           groupId> <artifactId>spring-boot-starter-dubbo 
                            artifactId> <version>1.0.0 
                             version>  
                              dependency>  
                              <dependency> <groupId>com.wyj 
                               groupId> <artifactId>springboot-dubbo01-service 
                                artifactId> <version>0.0.1-SNAPSHOT 
                                 version>  
                                  dependency>  
                                  <dependency> <groupId>org.slf4j 
                                   groupId> <artifactId>slf4j-api 
                                    artifactId> <version>1.7.25 
                                     version>  
                                      dependency> <dependency> <groupId>org.slf4j 
                                       groupId> <artifactId>log4j-over-slf4j 
                                        artifactId>  
                                         dependency>  
                                          dependencies> <build> <finalName>springboot-dubbo01-service-impl 
                                           finalName> <plugins> <plugin> <groupId>org.springframework.boot 
                                            groupId> <artifactId>spring-boot-maven-plugin 
                                             artifactId>  
                                              plugin>  
                                               plugins>  
                                                build> 

DemoServiceImpl:

@Service(timeout = 6000)//这个service是dubbo的service public class DemoServiceImpl implements DemoService { 
    @Autowired private DemoMapper demoMapper; @Override public List<Message> findMessage() { 
    return demoMapper.findMessage(); } } 

DemoMapper:

public interface DemoMapper { 
    public List<Message> findMessage(); } 

DemoMappe.xml:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.wyj.mapper.DemoMapper"> <select id="findMessage" resultType="com.wyj.entity.po.Message"> select * from message </select> </mapper> 

application.properties:

# tomcat server.port=8081 # dubbo spring.dubbo.application.name=demo-provider spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.protocol.name=dubbo spring.dubbo.protocol.port=20880 spring.dubbo.scan=com.wyj.service.impl # dataBase spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot-dubbo01?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull spring.datasource.username=root spring.datasource.password=root spring.datasource.max-idle=10 spring.datasource.max-wait=10000 spring.datasource.min-idle=5 spring.datasource.initial-size=5 # mybatis mybatis.mapper-locations=classpath:mapper/*.xml 
  • 新建模块,命名为springboot-dubbo01-api-web

api主要是用来存放controller、handler、interceptor

<parent> <groupId>com.wyj 
     groupId> <artifactId>springboot-dubbo01 
      artifactId> <version>0.0.1-SNAPSHOT 
       version>  
        parent> <dependencies>  
        <dependency> <groupId>org.springframework.boot 
         groupId> <artifactId>spring-boot-starter-thymeleaf 
          artifactId>  
           dependency>  
           <dependency> <groupId>org.springframework.boot 
            groupId> <artifactId>spring-boot-starter-web 
             artifactId>  
              dependency> <dependency> <groupId>org.springframework.boot 
               groupId> <artifactId>spring-boot-starter 
                artifactId>  
                 dependency> <dependency> <groupId>org.springframework.boot 
                  groupId> <artifactId>spring-boot-starter-test 
                   artifactId> <scope>test 
                    scope>  
                     dependency>  
                     <dependency> <groupId>io.dubbo.springboot 
                      groupId> <artifactId>spring-boot-starter-dubbo 
                       artifactId> <version>1.0.0 
                        version>  
                         dependency>  
                         <dependency> <groupId>com.wyj 
                          groupId> <artifactId>springboot-dubbo01-service-impl 
                           artifactId> <version>0.0.1-SNAPSHOT 
                            version> <exclusions> <exclusion> <groupId>org.mybatis.spring.boot 
                             groupId> <artifactId>mybatis-spring-boot-starter 
                              artifactId>  
                               exclusion> <exclusion> <groupId>mysql 
                                groupId> <artifactId>mysql-connector-java 
                                 artifactId>  
                                  exclusion>  
                                   exclusions>  
                                    dependency>  
                                     dependencies> <build> <finalName>springboot-dubbo01-api-web 
                                      finalName> <plugins> <plugin> <groupId>org.springframework.boot 
                                       groupId> <artifactId>spring-boot-maven-plugin 
                                        artifactId>  
                                         plugin>  
                                          plugins>  
                                           build> 

DemoController:

注意:

这里不能使用@Autowired注入bean,要使用dubbo中的注解@Reference注入bean和dubbo接口

@RestController public class DemoController { 
    @Reference private DemoService demoService; @RequestMapping(value = "/query") public ApiResponse demo() { 
    try { 
    List<Message> messageList = demoService.findMessage(); return new ApiResponse(200, "操作成功", messageList); } catch (Exception e) { 
    e.printStackTrace(); return new ApiResponse(500, "系统异常"); } } } 

application.properties:

# tomcat server.port=8080 # dubbo spring.dubbo.application.name=demo-consumer spring.dubbo.registry.address=zookeeper://127.0.0.1:2181 spring.dubbo.scan=com.wyj.controller 

测试

  • 先运行service-impl的服务,再启动api的服务,原则上是先启动service-impl的
  • 访问

查看监控中心

  • 访问dubbo-admin

在这里插入图片描述
点击服务治理中的服务
在这里插入图片描述
从监控中心可以看到com.wyj.service.DemoService这个接口能够正常注册到zookeeper中,并被api给消费






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222391.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午3:52
下一篇 2026年3月17日 下午3:53


相关推荐

  • SVM SMO算法代码详细剖析

    SVM SMO算法代码详细剖析算法实现一:本文要结合SVM理论部分来看即笔者另一篇https://blog.csdn.net/weixin_42001089/article/details/83276714二:有了理论部分下面就是直接代码啦,本文用四部分进行介绍:最简版的SMO,改进版plattSMO,核函数,sklearn库的SVM,四部分以%%%%%%%分开,采取的顺序是先给代码及结果,然后分析三:这里代码大…

    2022年6月17日
    37
  • querystring的用法

    querystring的用法一 querystring 的用法及原理 nbsp 当页面上的 FORM 以 GET 方式向页面发送请求数据 如数据含有不安全字符 则浏览器先将其转换成 16 进制的字符再传送 如空格被转成 20 时 WEB nbsp SERVER nbsp 将请求数据放入一名为 QUERY STRING 的环境变量中 QueryString nbsp 方法是从这一环境变量中取出相应的值 并将被转成 16 进制的字符还原 如 nbsp

    2025年12月10日
    9
  • pytorch实现ShuffleNet「建议收藏」

    pytorch实现ShuffleNet「建议收藏」ShuffleNet是由2017年07月发布的轻量级网络,设计用于移动端设备,在MobileNet之后的网络架构。主要的创新点在于使用了分组卷积(groupconvolution)和通道打乱(channelshuffle)。分组卷积和通道打乱分组卷积分组卷积最早由AlexNet中使用。由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把特征图分给多…

    2025年10月10日
    6
  • XML解析___使用Dom or使用Sax

    XML解析___使用Dom or使用Sax

    2021年10月3日
    224
  • 科大讯飞推出超拟人交互API,开启情感智能交互新时代

    科大讯飞推出超拟人交互API,开启情感智能交互新时代

    2026年3月14日
    2
  • queryinterface的用法[通俗易懂]

    queryinterface的用法[通俗易懂]客户可以根据QueryInterface函数来查询某个组件是否支持某个特定的接口,若支持,则QueryInterface则返回一个指向特定接口的指针,若不支持,则返回一个错误代码,它的函数形是这样的:     HRESULT__stdcallQueryInterface(constIID&iid,void**ppv);昨天已经设计了一个极其简单的QueryInte

    2022年6月26日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号