• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Spring boot 项目十七——集成 dubbo + mybatis-plus

武飞扬头像
--流星。
帮助1

引言

Dubbo 是阿里巴巴开源的基于 Java 的高性能 RPC 框架,本文介绍 Spring Boot 集成 Dubbo 的开发过程

前期准备

1、配置好的zookeeper

参考链接:Windows:快速安装zookeeper教程

2、多模块的SpringBoot项目

参考链接:IDEA创建Maven SpringBoot多模块工程

集成步骤

1、集成dubbo

provider(服务提供者)

1、pom文件

        <!--启动dubbo-->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

2、application文件

spring.application.name=dubbo-provider
spring.application.version=1.8
#dubbo配置
dubbo.scan.basePackages=com.dubbo.provider.service
dubbo.application.id=dubbo-provider
dubbo.application.name=dubbo-provider
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.id=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

学新通
3、接口

public interface GreetingService {
    String welcome(String name);
}

4、service层

/**
 * description service实现层
 *
 * @author 流星
 * @date 2022/2/23 13:31
 */
import com.alibaba.dubbo.config.annotation.Service;
import com.dubbo.provider.service.GreetingService;
import java.time.LocalDateTime;
@Service(version = "${spring.application.version}",
        application = "${dubbo.application.id}",
        protocol = "${dubbo.protocol.id}",
        registry = "${dubbo.registry.id}")
public class GreetingServiceImpl implements GreetingService {

    @Override
    public String welcome(String name) {
        String msg = "Welcome "   name   " at "   LocalDateTime.now();
        System.out.println(msg);
        return msg;
    }
}
学新通

consumer(服务消费者)

1、pom文件

        <dependency>
            <groupId>com.dubbo</groupId>
            <artifactId>provider</artifactId>
            <version>0.0.1-SNAPSHOT</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>0.2.0</version>
        </dependency>

学新通
2、application文件

spring.application.name=dubbo-consumer
spring.application.version=1.8

dubbo.application.id=dubbo-consumer
dubbo.application.name=dubbo-consumer
dubbo.protocol.id=dubbo
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.registry.id=zookeeper
dubbo.registry.address=zookeeper://127.0.0.1:2181

3、controller层

/**
 * description controller层
 *
 * @author 流星
 * @date 2022/2/22 9:48
 */
import com.alibaba.dubbo.config.annotation.Reference;
import com.dubbo.provider.service.GreetingService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ConsumerController {
    @Reference(version = "${spring.application.version}",
            application = "${spring.application.id}",
            registry = "${dubbo.registry.address}")
    private GreetingService greetingService;
    @Scheduled(fixedRate = 3000)
    public void consume() {
        System.out.println(greetingService.welcome("Dubbo"));
    }
}
学新通

4、启动器
学新通

测试结果

1、启动zookeeper
2、启动provider
学新通
学新通
学新通

3、启动consumer
学新通
学新通
学新通
4、断开provider
学新通
5、重新启动provider
学新通
学新通

2、集成mybatis-plus(在dubbo基础上添加)

provider(服务提供者)

1、pom文件

        <!--引入web依赖 支持spring mvc-->
        <!--idea 中 每次修改pom文件 必刷新maven-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--thymeleaf,模板引擎引入-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <!--集成mybaits-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
学新通

2、application文件

# 关闭缓存,默认开启
spring.thymeleaf.cache= false 
#    prefix: classpath:/pages/  #修改默认路径 classpath:/templates/
spring.datasource.url= jdbc:mysql://localhost:3306/dubbo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username= root
spring.datasource.password= 123456
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
# mybatis-plus配置
mybatis-plus.configuration.log-impl= org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.typeAliasesPackage=com.dubbo.provider.entity
mybatis-plus.mapperLocations= classpath:mapper/*.xml
server.port= 8085

3、config文件

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

4、实体类

@Data
public class User implements Serializable {
	//序列化版本号
    private static final long serialVersionUID = -2007626239612497373L;
    private Integer id;
    private String userName;
    private Integer age;
}

5、新接口

public interface UserService extends IService<User> {
    /**
     * 获取用户信息
     **/
    User getUser(String userName);
}

6、实现层

import com.alibaba.dubbo.config.annotation.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
    @Resource
    private UserMapper userMapper;
    @Override
    public User getUser(String userName) {
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("user_name",userName);
        return userMapper.selectOne(queryWrapper);
    }
}

7、mapper层(dao层)

public interface UserMapper extends BaseMapper<User> {
}

8、启动器
学新通

consumer(服务消费者)

1、pom文件

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

2、application文件

spring.datasource.url= jdbc:mysql://localhost:3306/dubbo?useUnicode=true&characterEncoding=utf-8
spring.datasource.username= root
spring.datasource.password= 123456
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver

3、controller层

    @Reference
    private UserService userService;
    @Scheduled(fixedRate = 3000)
    public void getUser() {
        System.out.println(userService.getUser("流星").getAge());
    }

测试结果

1、启动zookeeper
2、启动provider
3、启动consumer
学新通

附:扩展资料

解析dubbo框架

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfebe
系列文章
更多 icon
同类精品
更多 icon
继续加载