標籤: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@EnableReactiveMongoRepositoriespublic 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")@Datapublic 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 **/@Repositorypublic 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版本