前期准备Dubbo 是阿里巴巴开源的基于 Java 的高性能 RPC 框架,本文介绍 Spring Boot 集成 Dubbo 的开发过程
1、配置好的zookeeper
参考链接:Windows:快速安装zookeeper教程
2、多模块的SpringBoot项目
集成步骤 1、集成dubbo provider(服务提供者)参考链接:IDEA创建Maven+SpringBoot多模块工程
1、pom文件
com.alibaba.boot
dubbo-spring-boot-starter
0.2.0
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层
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文件
com.dubbo provider 0.0.1-SNAPSHOT compile com.alibaba.boot dubbo-spring-boot-starter 0.2.0
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层
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
1、pom文件
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-thymeleaf
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
mysql
mysql-connector-java
com.baomidou
mybatis-plus-boot-starter
3.4.2
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
User getUser(String userName);
}
6、实现层
import com.alibaba.dubbo.config.annotation.Service; @Service public class UserServiceImpl extends ServiceImplimplements UserService { @Resource private UserMapper userMapper; @Override public User getUser(String userName) { QueryWrapper queryWrapper=new QueryWrapper<>(); queryWrapper.eq("user_name",userName); return userMapper.selectOne(queryWrapper); } }
7、mapper层(dao层)
public interface UserMapper extends baseMapper{ }
8、启动器
1、pom文件
mysql mysql-connector-java
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框架



