在这篇文章中,我们将研究如何将Spring Boot与MongoDB集成。我们将看看使用Spring Boot与MongoDB合作的不同选项。
在本教程中,我们将展示**MongoDB与spring boot的整合过程。 我们知道,spring boot是一个流行的框架,它是建立在spring框架之上的。通过spring boot,我们可以用最少的配置来构建一个项目。现在我们不需要考虑配置相关的复杂性来构建和运行一个spring框架项目。Spring boot提供了许多复杂的配置,无需花费大量的开发时间。我们知道MongoDB作为无SQL数据库也越来越受欢迎。
在我们将Spring Boot与MongoDB集成之前,让我们确保已经在开发环境中安装并配置了MongoDB。遵循官方指南中的installation instructions。
我们可以按照以下链接的说明来设置MongoDB。你应该按照你的操作系统的说明进行设置。安装完成后,启动MongoDB服务。由于我使用的是mac操作系统,我将执行**brew services start
****[email protected]
*****。 ***我们将在这篇文章中讨论一些基本的操作,如插入、更新、删除等事项。让我们来看看MongoDB的一些基本查询。
use test_db
**。 show dbs
**访问test_dbdb.test_db.insert({"employeeModel":{ “id”: 3,”name”:”Ayoosh” }})
**向test_db插入一些集合。db.test_db.find()
**。在我们开始之前,让我们用spring web starter和Spring Data MongoDB**as依赖项创建一个简单的Spring Boot应用程序。我们可以使用我们的IDE来生成应用程序,或者如果你愿意,你可以使用Spring初始化器来引导你的应用程序。
点击 "生成按钮",将项目结构下载到你的本地机器。我们要在项目中添加以下依赖项。
这就是我们的pom.xml
的样子。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.13.RELEASE</version>
<relativePath />
<!-- lookup parent from repository -->
</parent>
<groupId>com.javadevjournal</groupId>
<artifactId>boot-mongo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>boot-mongo</name>
<description>Demo project for Spring Boot with MongoDB</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
如果你使用Gradle作为构建工具,build.gradle
文件应该包含以下代码。
plugins {
id 'org.springframework.boot' version '2.1.13.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
}
group = 'com.javadevjournal'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
在上面的讨论中,我们已经用MongoDB配置了spring boot。Spring boot提供了两种方法来通过应用程序访问MongoDB。一种是*MongoTemplate,,另一种是MongoRepository。 ***我们将提供两种方式的例子。
为了更好地理解,我们将开发一个应用程序来存储和检索MongoDB数据库中的雇员信息。我们将定义一个Employee模型,其中包含id、name、address字段。Spring Data通过***Spring Data MongoDB***提供了这种访问MongoDB数据库的设施。
为了将我们的**Spring Boot应用程序与MongoDB连接,让我们在application.properties文件中定义数据库配置。Spring Boot自动配置将自动使用这些属性,一旦它启动带MongoDB的自动配置。添加以下属性(根据您的配置进行更改)
spring.data.mongodb.database=employee_db
spring.data.mongodb.port=27017
spring.data.mongodb.host=localhost
为了从MongoDB中存储和检索数据,让我们在系统中创建一个代表底层表的实体类。 这就是我们的雇员类的模样。
package com.mongo.springbootmongodb;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import java.util.Date;
@Document
public class EmployeeModel {
@Id
private long id;
private String name;
private String address;
private Date creationDate = new Date();
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Date getCreationDate() {
return creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
}
现在我们将配置spring mongo存储库的接口来支持这个雇员模型。我们可以看到,EmployeeRepository***继承了***MongoRepository,它是spring data mongo repository的一部分。
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface EmployeeRepository extends MongoRepository < EmployeeModel, Long > {
}
Spring Boot将自动处理集成的其他部分。让我们创建一个REST控制器来检查完整的工作流程 我们将看到GET、POST HTTP方法的例子。
package com.mongo.springbootmongodb;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/template")
public class EmployeeEndpointUsingTemplate {
private final Logger logger = LoggerFactory.getLogger(getClass());
private final MongoTemplate mongoTemplate;
public EmployeeEndpointUsingTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@RequestMapping(value = "", method = RequestMethod.GET)
public List < EmployeeModel > getAllUsers() {
logger.info("Getting all Employees.");
return mongoTemplate.findAll(EmployeeModel.class);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public EmployeeModel getEmployee(@PathVariable long id) {
logger.info("Getting Employee with ID: {}.", id);
EmployeeModel employeeModel = mongoTemplate.findById(id, EmployeeModel.class);
return employeeModel;
}
@RequestMapping(value = "/create", method = RequestMethod.POST)
public EmployeeModel add(@RequestBody EmployeeModel employeeModel) {
logger.info("Saving Employee.");
return mongoTemplate.save(employeeModel);
}
}
发送一个按钮点击后,它将创建一个条目到数据库中。然后我们应该调用GET方法来验证该条目是否被创建,就像下面的图片一样。
点击发送按钮后,它将返回一个条目,如上图所示。所以,条目被创建了,同样的方法我们可以测试DELETE方法。
我们将用MongoTemplate实现另一种访问数据库的方式。要使用MongoTemplate,请自动将MongoTemplate到控制器中。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/template")
public class EmployeeEndpointUsingTemplate {
private final Logger logger = LoggerFactory.getLogger(getClass());
private final MongoTemplate mongoTemplate;
public EmployeeEndpointUsingTemplate(MongoTemplate mongoTemplate) {
this.mongoTemplate = mongoTemplate;
}
@RequestMapping(value = "", method = RequestMethod.GET)
public List < EmployeeModel > getAllUsers() {
logger.info("Getting all Employees.");
return mongoTemplate.findAll(EmployeeModel.class);
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public EmployeeModel getEmployee(@PathVariable long id) {
logger.info("Getting Employee with ID: {}.", id);
EmployeeModel employeeModel = mongoTemplate.findById(id, EmployeeModel.class);
return employeeModel;
}
@RequestMapping(value = "/create", method = RequestMethod.POST)
public EmployeeModel add(@RequestBody EmployeeModel employeeModel) {
logger.info("Saving Employee.");
return mongoTemplate.save(employeeModel);
}
}
用postman测试这个实现,就像我们对前一个实现所做的那样。我们需要在url中加入/template路径。我们将得到与上述postman请求样本相同的结果。
在这篇文章中,我们研究了将***Spring Boot与MongoDB***的集成。我们研究了使用MongoTemplate和MongoRepository的选项,以使用Spring Boot为我们的应用程序访问数据。 该应用程序的源代码可在GitHub上找到。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javadevjournal.com/spring-boot/spring-boot-with-mongodb/
内容来源于网络,如有侵权,请联系作者删除!