Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 30c8017

Browse files
committed
Add MongoDB section
1 parent 0d46bca commit 30c8017

File tree

3 files changed

+151
-5
lines changed

3 files changed

+151
-5
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
![Spring Boot](https://spring.io/img/homepage/icon-spring-boot.svg)
44

5-
使用 Spring Boot,您只需极少的配置就能轻松构建出基于 Spring 的独立,生产级别应用程序
5+
使用 Spring Boot,您只需极少的配置就能轻松构建出独立、基于 Spring 的生产级别应用程序
66

77
该项目为 Spring Boot 文档翻译项目,由本人个人发起,基于 [Spring Boot 2.x](https://spring.io/projects/spring-boot) 的官方文档进行翻译。
88

@@ -14,7 +14,7 @@
1414

1515
## 项目状态
1616

17-
计划中……
17+
翻译中……
1818

1919
## 许可
2020
![](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)

SUMMARY.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,5 +150,9 @@
150150
- [31、使用 NoSQL 技术](pages/spring-boot-features.md#boot-features-nosql)
151151
- [31.1、Redis](pages/spring-boot-features.md#boot-features-redis)
152152
- [31.1.1、连接 Redis](pages/spring-boot-features.md#boot-features-connecting-to-redis)
153-
153+
- [## 31.2、MongoDB](pages/spring-boot-features.md#boot-features-mongodb)
154+
- [### 31.2.1、连接 MongoDB 数据库](pages/spring-boot-features.md#boot-features-connecting-to-mongodb)
155+
- [31.2.2、MongoTemplate](pages/spring-boot-features.md#boot-features-mongo-template)
156+
- [31.2.3、Spring Data MongoDB 资源库](pages/spring-boot-features.md#boot-features-spring-data-mongo-repositories)
157+
- [31.2.4、内嵌 Mongo](pages/spring-boot-features.md#boot-features-mongo-embedded)
154158

pages/spring-boot-features.md

Lines changed: 144 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,7 +1116,7 @@ Spring Boot 附带了许多可以定义 Filter bean 的自动配置。以下是
11161116

11171117
<a id="boot-features-embedded-container-application-context"></a>
11181118

1119-
##### 28.4.3、ServletWebServerApplicationContext
1119+
#### 28.4.3、ServletWebServerApplicationContext
11201120

11211121
Spring Boot 底层使用了一个不同的 `ApplicationContext` 类型来支持内嵌 servlet。`ServletWebServerApplicationContext` 是一个特殊 `WebApplicationContext` 类型,它通过搜索单个 `ServletWebServerFactory` bean 来引导自身。通常,`TomcatServletWebServerFactory``JettyServletWebServerFactory` 或者 `UndertowServletWebServerFactory` 中的一个将被自动配置。
11221122

@@ -1247,7 +1247,7 @@ Java 的 `javax.sql.DataSource` 接口提供了一个使用数据库连接的标
12471247

12481248
**提示**
12491249

1250-
> **How-to** 部分包含了[如何初始化数据库](#howto-database-initialization)部分
1250+
> **How-to** 部分包含了[如何初始化数据库](#howto-database-initialization)方面的内容。
12511251
12521252
Spring Boot 可以自动配置内嵌 [H2](http://www.h2database.com/)[HSQL](http://hsqldb.org/)[Derby](https://db.apache.org/derby/) 数据库。您不需要提供任何连接 URL,只需为您想要使用的内嵌数据库引入特定的构建依赖。
12531253

@@ -1695,5 +1695,147 @@ public class MyBean {
16951695
16961696
如果您添加了自己的任何一个自动配置类型的 `@Bean`,它将替换默认设置(除了 `RedisTemplate`,由于排除是基于 bean 名称,而 `redisTemplate` 不是它的类型)。默认情况下,如果 `commons-pool2` 在 classpath 上,您将获得一个连接池工厂。
16971697

1698+
<a id="boot-features-mongodb"></a>
1699+
1700+
## 31.2、MongoDB
1701+
1702+
[MongoDB](https://www.mongodb.com/) 是一个开源的 NoSQL 文档数据库,其使用了类似 JSON 的模式(schema)来替代传统基于表的关系数据。Spring Boot 为 MongoDB 提供了几种便利的使用方式,包括 `spring-boot-starter-data-mongodb``spring-boot-starter-data-mongodb-reactive` starter。
1703+
1704+
<a id="boot-features-connecting-to-mongodb"></a>
1705+
1706+
### 31.2.1、连接 MongoDB 数据库
1707+
1708+
您可以注入一个自动配置的 `org.springframework.data.mongodb.MongoDbFactory` 来访问 Mongo 数据库。默认情况下,该实例将尝试在 `mongodb://localhost/test` 上连接 MongoDB 服务器,以下示例展示了如何连接到 MongoDB 数据库:
1709+
1710+
```java
1711+
import org.springframework.data.mongodb.MongoDbFactory;
1712+
import com.mongodb.DB;
1713+
1714+
@Component
1715+
public class MyBean {
1716+
1717+
private final MongoDbFactory mongo;
1718+
1719+
@Autowired
1720+
public MyBean(MongoDbFactory mongo) {
1721+
this.mongo = mongo;
1722+
}
1723+
1724+
// ...
1725+
1726+
public void example() {
1727+
DB db = mongo.getDb();
1728+
// ...
1729+
}
1730+
1731+
}
1732+
```
1733+
1734+
您可以通过设置 `spring.data.mongodb.uri` 属性来更改 URL 和配置其他设置,如**副本集**(replica set):
1735+
1736+
```ini
1737+
spring.data.mongodb.uri=mongodb://user:[email protected]:12345,mongo2.example.com:23456/test
1738+
```
1739+
1740+
另外,只要您使用了 Mongo 2.x,请指定 `host`/`port`。比如,您可能要在 `application.properties` 中声明以下内容:
1741+
1742+
```ini
1743+
spring.data.mongodb.host=mongoserver
1744+
spring.data.mongodb.port=27017
1745+
```
1746+
1747+
如果您已经定义了自己的 `MongoClient`,它将被用于自动配置合适的 `MongoDbFactory`。支持 `com.mongodb.MongoClient``com.mongodb.client.MongoClient`
1748+
1749+
**注意**
1750+
1751+
> 如果您使用 Mongo 3.0 Java 驱动,则不支持 `spring.data.mongodb.host``spring.data.mongodb.port`。这种情况下,应该使用 `spring.data.mongodb.uri` 来提供所有配置。
1752+
1753+
**提示**
1754+
1755+
> 如果未指定 `spring.data.mongodb.port`,则使用默认值 `27017`。您可以将上述示例中的改行配置删除掉。
1756+
1757+
**提示**
1758+
1759+
> 如果您不使用 Spring Data Mongo,则可以注入 `com.mongodb.MongoClient` bean 来代替 `MongoDbFactory`。如果要完全控制建立 MongoDB 连接,您还可以声明自己的 `MongoDbFactory` 或者 `MongoClient` bean。
1760+
1761+
**注意**
1762+
1763+
> 如果您使用的是响应式驱动,则 SSL 需要 Netty。 如果 Netty 可用且 factory 尚未自定义,则自动配置会自动配置此 factory。
1764+
1765+
<a id="boot-features-mongo-template"></a>
1766+
1767+
### 31.2.2、MongoTemplate
1768+
1769+
[Spring Data Mongo](https://projects.spring.io/spring-data-mongodb/) 提供了一个 [`MongoTemplate`](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoTemplate.html) 类,它的设计与 Spring 的 `JdbcTemplate` 非常相似。与 `JdbcTemplate` 一样,Spring Boot 会自动配置一个 bean,以便您能注入模板:
1770+
1771+
```java
1772+
import org.springframework.beans.factory.annotation.Autowired;
1773+
import org.springframework.data.mongodb.core.MongoTemplate;
1774+
import org.springframework.stereotype.Component;
1775+
1776+
@Component
1777+
public class MyBean {
1778+
1779+
private final MongoTemplate mongoTemplate;
1780+
1781+
@Autowired
1782+
public MyBean(MongoTemplate mongoTemplate) {
1783+
this.mongoTemplate = mongoTemplate;
1784+
}
1785+
1786+
// ...
1787+
1788+
}
1789+
```
1790+
1791+
更多详细信息,参照 [`MongoOperations`](https://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html) Javadoc。
1792+
1793+
<a id="boot-features-spring-data-mongo-repositories"></a>
1794+
1795+
### 31.2.3、Spring Data MongoDB 资源库
1796+
1797+
Spring Data 包含了对 MongoDB 资源库(repository)的支持。与之前讨论的 JPA 资源库一样,基本原理是根据方法名称自动构建查询。
1798+
1799+
事实上,Spring Data JPA 和 Spring Data MongoDB 共享通用的底层代码,因此你可以拿之前提到的 JPA 示例作为基础,假设 `City` 现在是一个 Mongo 数据类,而不是一个 JPA `@Entity`,他们方式工作相同:
1800+
1801+
```java
1802+
package com.example.myapp.domain;
1803+
1804+
import org.springframework.data.domain.*;
1805+
import org.springframework.data.repository.*;
1806+
1807+
public interface CityRepository extends Repository<City, Long> {
1808+
1809+
Page<City> findAll(Pageable pageable);
1810+
1811+
City findByNameAndStateAllIgnoringCase(String name, String state);
1812+
1813+
}
1814+
```
1815+
1816+
**提示**
1817+
1818+
> 您可以使用 `@EntityScan` 注解来自定义文档扫描位置。
1819+
1820+
**提示**
1821+
1822+
> 有关 Spring Data MongoDB 的完整详细内容,包括其丰富的对象关系映射技术,请参考其[参考文档](https://projects.spring.io/spring-data-mongodb/)
1823+
1824+
1825+
<a id="boot-features-mongo-embedded"></a>
1826+
1827+
### 31.2.4、内嵌 Mongo
1828+
1829+
Spring Boot 提供了[内嵌 Mongo](https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo) 的自动配置。要在 Spring Boot 应用程序中使用它,请添加依赖 `de.flapdoodle.embed:de.flapdoodle.embed.mongo`
1830+
1831+
可以使用 `spring.data.mongodb.port` 属性来配置 Mongo 的监听端口。如果想随机分配空闲端口,请把值设置为 0。`MongoAutoConfiguration` 创建的 `MongoClient` 将自动配置随机分配的端口。
1832+
1833+
**注意**
1834+
1835+
> 如果您不配置一个自定义端口,内嵌支持将默认使用一个随机端口(而不是 27017)。
1836+
1837+
如果您的 classpath 上有 SLF4J,Mongo 产生的输出将自动路由到名为 `org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongo` 的 logger。
1838+
1839+
您可以声明自己的 `IMongodConfig``IRuntimeConfig` bean 来控制 Mongo 实例的配置和日志路由。
16981840

16991841
**待续……**

0 commit comments

Comments
 (0)