码迷,mamicode.com
首页 > 数据库 > 详细

WebFlux04 SpringBootWebFlux集成MongoDB之Windows版本

时间:2018-06-29 00:07:53      阅读:471      评论:0      收藏:0      [点我收藏+]

标签:nbsp   ble   img   string   not   bbb   esc   注解   xtend   

1 下载并安装MongoDB

  1.1 MongoDB官网

    技术分享图片

  1.2 下载

    solutions -> download center

    技术分享图片

  1.3 安装

    双击进入安装即可

    1.3.1 安装时常见bug01

      技术分享图片

    1.3.2 bug01解决办法

      技术分享图片

  1.4 启动mongodb

    技巧01:需要在同安装目录同一级别创建一个data目录来存放数据

    技巧02:将下下面的命令存储成一个 bat 文件,下次启动时双击即可

C:\tool\mongoDB\bin\mongod --dbpath C:\tool\data --smallfiles

  1.5 mongodb正常启动后的控制台信息

    技术分享图片

 

2 SpringBootWebFlux集成MongoDB

  2.1 创建一个项目

    引入相关依赖:webflux、mongodb、devtool、lombok

技术分享图片
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.xiangxu</groupId>
    <artifactId>webflux_demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>webflux_demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <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>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <!--<scope>runtime</scope>-->
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-mongodb-reactive -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb-reactive</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>
pom.xml

  2.2 启动类

    在启动类上添加 @EnableReactiveMongoRepositories 注解来开启mongodb相关的配置

技术分享图片
package cn.xiangxu.webflux_demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories;

@SpringBootApplication
@EnableReactiveMongoRepositories
public class WebfluxDemoApplication {

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

  2.3 实体类

    @Document(collection = "user") 目的时定义在mongodb中的表名,相当于JPA中的@Table注解

    技巧01:在mongodb中的主键一般都是String类型的

技术分享图片
package cn.xiangxu.webflux_demo.domain;

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

/**
 * @author 王杨帅
 * @create 2018-06-27 8:42
 * @desc
 **/
@Document(collection = "user")
@Data
public class User {
    @Id
    private String id;

    private String name;

    private int age;
}
User.java

  2.4 持久层

    只需要继承 ReactiveMongoRepository 接口就行啦,和JPA差不多

技术分享图片
package cn.xiangxu.webflux_demo.repository;

import cn.xiangxu.webflux_demo.domain.User;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import org.springframework.stereotype.Repository;

/**
 * @author 王杨帅
 * @create 2018-06-27 8:44
 * @desc
 **/
@Repository
public interface UserRepository extends ReactiveMongoRepository<User, String> {
}
UserRepository.java

  2.5 控制层

    技巧01:有两种返回方式,一种是把所有数据一次性返回,另一种是像流一样的进行返回

技术分享图片
package cn.xiangxu.webflux_demo.web;

import cn.xiangxu.webflux_demo.domain.User;
import cn.xiangxu.webflux_demo.repository.UserRepository;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

/**
 * @author 王杨帅
 * @create 2018-06-27 8:45
 * @desc
 **/
@RestController
@RequestMapping(value = "/user")
public class UserController {

    private final UserRepository userRepository;

    /**
     * 利用构造器注入持久层对象
     * @param userRepository
     */
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    /**
     * 一次性返回
     * @return
     */
    @GetMapping(value = "/")
    public Flux<User> getAll() {
        return userRepository.findAll();
    }

    /**
     * 流式返回
     * @return
     */
    @GetMapping(value = "/stream/all", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<User> streamGetAll() {
        return userRepository.findAll();
    }


}
UserController.java

  2.6 配置文件

    前提:安装好mongodb并启动

spring.data.mongodb.uri=mongodb://localhost:27017/webflux

  2.7 启动并测试

    技巧01:利用postman进行测试

    技术分享图片

 

WebFlux04 SpringBootWebFlux集成MongoDB之Windows版本

标签:nbsp   ble   img   string   not   bbb   esc   注解   xtend   

原文地址:https://www.cnblogs.com/NeverCtrl-C/p/9241138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!