公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
不知不觉,陆陆续续已经写过很多关于 WebFlux 教程了。不来不着急这写这一张的。但是最近有一个网友加了我的微信,反馈信息,问我:“如果进行 WebFlux + Mongo 的整合?”
于是,我就给他写了一个 demo。今天抽个时间,把这个 demo 发出来,希望能够帮助到更多人。
首先,我们可以创建一个 Maven 项目,如:webflux-mongo。
然后,pom.xml 配置文件的内容如下:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<!-- Spring Boot 响应式 MongoDB 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
然后,在 application.yml 配置 Mongo 的连接信息。
#mongodb的配置
spring:
data:
mongodb:
host: 127.0.01
database: xttblog
port: 27017
username: xttblog
password: xttblog
然后是一个文档类:Xttblog。
public class Xttblog implements Serializable {
private Long id;
private String url;
private String title;
private String author;
private String text;
//...省略get/set
}
然后是 XttblogRepository 类。
@Repository
public interface XttblogRepository extends
ReactiveMongoRepository<Xttblog, Long> {
}
业务 XttblogHandler 类。
@Component
public class XttblogHandler {
@Autowired
private XttblogRepository xttblogRepository;
public Mono<Xttblog> save(Xttblog xttblog) {
return xttblogRepository.save(xttblog);
}
public Flux<Xttblog> findAllXttblog() {
return xttblogRepository.findAll().cache();
}
public Mono<Xttblog> modifyXttblog(Xttblog xttblog) {
Mono<Xttblog> resultMono = xttblogRepository.save(xttblog);
return resultMono;
}
public Mono<Long> deleteXttblog(Long id) {
xttblogRepository.deleteById(id);
return Mono.create(monoSink -> monoSink.success(id));
}
public Mono<Xttblog> findXttblogById(Long id) {
// 从 MongoDB 中获取城市信息
Mono<Xttblog> xttblogMono = xttblogRepository.findById(id);
return xttblogMono;
}
}
最后是 MongoController 类。
public class MongoController {
@Autowired
private XttblogHandler xttblogHandler;
@GetMapping(value = "/{id}")
public Mono<Xttblog> findXttblogById(@PathVariable("id") Long id) {
return xttblogHandler.findXttblogById(id);
}
@GetMapping()
public Flux<Xttblog> findAllXttblog() {
return xttblogHandler.findAllXttblog();
}
@PostMapping()
public Mono<Xttblog> saveXttblog(@RequestBody Xttblog xttblog) {
return xttblogHandler.save(xttblog);
}
@PutMapping()
public Mono<Xttblog> modifyXttblog(@RequestBody Xttblog city) {
return xttblogHandler.modifyXttblog(city);
}
@DeleteMapping(value = "/{id}")
public Mono<Long> deleteXttblog(@PathVariable("id") Long id) {
return xttblogHandler.deleteXttblog(id);
}
}
运行 MongoAppliction,代码如下:
@SpringBootApplication
public class MongoAppliction {
public static void main(String[] args) {
SpringApplication.run(MongoAppliction.class, args);
}
}
至于,运行效果,我就不贴了。
更多关于 WebFlux 的教程内容,请阅读:WebFlux 教程。

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » WebFlux + Mongo 进行项目整合开发