Spring boot 项目十七——集成 dubbo + mybatis-plus
引言
Dubbo 是阿里巴巴开源的基于 Java 的高性能 RPC 框架,本文介绍 Spring Boot 集成 Dubbo 的开发过程
前期准备
1、配置好的zookeeper
2、多模块的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
附:扩展资料
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggfebe
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13