SpringBoot集成Dubbo

服务器端配置步骤
POM配置`
在这里插入图片描述
application.yml配置
在这里插入图片描述
服务接口
在这里插入图片描述
服务实现类
在这里插入图片描述

一、准备POM文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.test</groupId>
  <artifactId>Proj_1604F_springbootProvider</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Proj_1604F_springbootProvider</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
        <relativePath/>
    </parent>

      <dependencies>

        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>1.0.1</version>
        </dependency>
        <!-- 
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>
         -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.11</version>
            <exclusions>
                <exclusion>  
                    <groupId>com.alibaba</groupId>
                    <artifactId>jconsole</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>com.alibaba</groupId>
                    <artifactId>tools</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency> 
            <groupId>org.apache.tomcat.embed</groupId> 
            <artifactId>tomcat-embed-jasper</artifactId> 
            <scope>provided</scope> 
        </dependency> 
        <dependency>
            <groupId>javax.servlet</groupId> 
            <artifactId>jstl</artifactId> 
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.1.2</version>
        </dependency>

      </dependencies>

</project>

二、准备application.yml配置文件

server:
  port: 9090
  context-path: /

spring:

  #Dubbo 1.0.1集成
  dubbo:
    appname: dubbo-service
    registry: zookeeper://192.168.25.30:2181
    protocol: dubbo
    port: 20880

#Dubbo 2.1.0集成
#  dubbo:
#    application:
#      name: dubbo-service
#    registry:
#      address: zookeeper://192.168.25.30:2181
#    protocol:
#      name: dubbo
#      port: 20880

#数据源配置      
  datasource:
    name: w1
    url: jdbc:mysql://127.0.0.1:3306/w2?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    maxActive: 20
    initialSize: 1
    maxWait: 60000
    minIdle: 1

#Mybatis实体类配置    
mybatis:
  mapper-locations: classpath:mapper/*.xml

三、定义服务接口

package com.test.service;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.github.pagehelper.PageInfo;
import com.test.bean.M2SInfo;
import com.test.bean.MenuInfo;
import com.test.bean.StaffInfo;

public interface MenuService {
    //根据菜单名称查询菜单结果
    public List<MenuInfo> findMenu(String name);
    //返回全部材料列表
    public List<StaffInfo> findStaff();
    //保存菜单对象,返回保存对象,使用Dubbo远程调用需要返回对象ID
    public MenuInfo saveMenu(MenuInfo mi);
    //更新菜单对象
    public void updateMenu(MenuInfo mi);
    //根据菜单ID删除记录
    public void deleteMenu(Integer mid);
    //保存中间表
    public void saveM2S(M2SInfo m2s);
    //根据菜单ID删除中间表
    public void deleteM2S(Integer mid);
    //返回多表关联查询数据
    public List<MenuInfo> findMenu2(String name);
    //根据菜单ID返回菜单对象,需要多表关联查询
    public MenuInfo getMenuById(Integer mid);
    //返回分页菜单数据
    public PageInfo getPageMenu(String name,Integer page,Integer rows);
}

四、定义服务实现类

添加注解
@com.alibaba.dubbo.config.annotation.Service(interfaceClass = MenuService.class)

package com.test.service.impl;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.test.bean.M2SInfo;
import com.test.bean.MenuInfo;
import com.test.bean.StaffInfo;
import com.test.mapper.MenuMapper;
import com.test.service.MenuService;

//Dubbo服务注解
@com.alibaba.dubbo.config.annotation.Service(interfaceClass = MenuService.class)
//Spring服务主键
@Service
public class MenuServiceImpl implements MenuService{
    private Logger log = LoggerFactory.getLogger(MenuServiceImpl.class);
    //注入Mapper对象
    @Autowired
    private MenuMapper mapper;

    //@Transactional代表需要开启事务控制
    @Override
    @Transactional(readOnly=true,propagation=Propagation.REQUIRES_NEW)
    public List<MenuInfo> findMenu(String name) {
        return mapper.findMenu(name);
    }

    @Override
    @Transactional(readOnly=true,propagation=Propagation.REQUIRES_NEW)
    public PageInfo getPageMenu(String name,Integer page,Integer rows) {
        System.out.println("name="+name+",page="+page+",rows="+rows);
        PageHelper.startPage(page, rows);
        List<MenuInfo> menuList = findMenu2(name);
        PageInfo pi = new PageInfo(menuList);
        return pi;
    }

    @Override
    public List<StaffInfo> findStaff() {
        return mapper.findStaff();
    }

    @Transactional
    @Override
    public MenuInfo saveMenu(MenuInfo mi) {
        mapper.saveMenu(mi);
        return mi;
    }

    @Override
    public void updateMenu(MenuInfo mi) {
        mapper.updateMenu(mi);
    }

    @Override
    public void deleteMenu(Integer mid) {
        mapper.deleteMenu(mid);
    }

    @Override
    public void saveM2S(M2SInfo m2s) {
        mapper.saveM2S(m2s);
    }

    @Override
    public void deleteM2S(Integer mid) {
        mapper.deleteM2S(mid);
    }

    @Override
    public List<MenuInfo> findMenu2(String name) {
        return mapper.findMenu2(name);
    }

    @Override
    public MenuInfo getMenuById(Integer mid) {
        return mapper.getMenuById(mid);
    }

}

五、启动类

package com.test;

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

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

//SpringBoot核心注解,自动扫描本来所在包下的所有子包
//相当于@Configuration + @EnableAutoConfiguration + @ComponentScan
@SpringBootApplication
//开启Dubbo配置
@EnableDubboConfiguration
public class App {
    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

客户端配置步骤

POM配置
在这里插入图片描述
Application.properties配置
在这里插入图片描述
dubbo.properties
#Dubbo QOS Server Port
dubbo.qos.port=20221

注入远程Dubbo服务
在这里插入图片描述

一、准备POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.test</groupId>
  <artifactId>Proj_1604F_springbootWeb</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>Proj_1604F_springbootWeb Maven Webapp</name>
  <url>http://maven.apache.org</url>

    <!-- 定义公共资源版本 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
        <relativePath/> 
    </parent>

  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 添加springboot对AOP的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <!-- 添加springboot对redis的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- 添加springboot对freemarker的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <!-- 添加springboot对测试的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!-- 添加springboot对在线开发的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>true</scope>
        </dependency>
        <!-- 添加springboot对amqp的支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency> 
            <groupId>org.apache.tomcat.embed</groupId> 
            <artifactId>tomcat-embed-jasper</artifactId> 
            <!--
            <scope>provided</scope>
             -->
        </dependency> 
        <dependency>
            <groupId>javax.servlet</groupId> 
            <artifactId>jstl</artifactId> 
        </dependency>
        <!-- 
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.0.1-SNAPSHOT</version>
        </dependency>
         -->
        <dependency>
            <groupId>com.alibaba.spring.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>1.0.1</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>

        <!-- 分页插件 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.1.2</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.11</version>
            <exclusions>
                <exclusion>  
                    <groupId>com.alibaba</groupId>
                    <artifactId>jconsole</artifactId>
                </exclusion>  
                <exclusion>
                    <groupId>com.alibaba</groupId>
                    <artifactId>tools</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
  </dependencies>


  <build>
    <finalName>Proj_1604F_springbootWeb</finalName>
  </build>
</project>

二、准备配置文件application.properties

#SpringBoot启动端口和项目路径
server.port=6060
server.context-path=/

#spring.resources.static-locations=/css,/images,/img,/js

#SpringMVC中JSP视图配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

#Http编码配置    
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true

#Rabbitmq消息服务器配置      
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

#数据源配置      
spring.datasource.name=w1
spring.datasource.url=jdbc:mysql://localhost:3306/w1?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.maxActive=20
spring.datasource.initialSize=1
spring.datasource.maxWait=60000
spring.datasource.minIdle=1

#Dubbo 1.0.1集成
spring.dubbo.appname=dubbo-consumer
spring.dubbo.registry=zookeeper://192.168.137.1:2181
spring.dubbo.protocol=dubbo
spring.dubbo.port=20880


#Dubbo 2.1.0集成
#spring.dubbo.application.name=dubbo-consumer
#spring.dubbo.registry.address=zookeeper://192.168.137.1:2181
#spring.dubbo.protocol.name=dubbo
#spring.dubbo.protocol.port=20880

#日志配置
logging.file=d:/springboot.log
logging.level.com.test.mapper=INFO
logging.level.com.hk.servlet=DEBUG
logging.level.com.test.service.impl=DEBUG


三、准备dubbo.properties

#Dubbo QOS Server Port
dubbo.qos.port=20221

四、注入服务

package com.test.ctrl;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.dubbo.config.annotation.Reference;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.test.bean.MenuInfo;
import com.test.bean.StaffInfo;
import com.test.service.MenuService;


@Controller
public class MenuCtrl {
    @Reference(check=false)
    private MenuService serv;

    //跳转菜单列表的方法
    //接收前台参数page,rows
    @ResponseBody
    @RequestMapping("/list")
    public List<StaffInfo> list(HttpServletRequest req,Integer page,Integer rows)
    {
        if(page == null)
            page = 1;
        if(rows == null)
            rows = 4;
        String name = req.getParameter("name");
        List<StaffInfo> list = serv.findStaff();
        
       
        return list;
    }


}

五、启动类

package com.test;

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

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;

@SpringBootApplication
@EnableDubboConfiguration
public class Starter {

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值