How to Seamlessly Integrate Spring Boot with MongoDB: A Step‑by‑Step Guide

This tutorial walks you through adding MongoDB dependencies to a Spring Boot project, configuring the connection, defining entity and repository classes, implementing service and controller layers, and optionally setting up sharding or replica‑set architectures for scalable data management.

MaGe Linux Operations
MaGe Linux Operations
MaGe Linux Operations
How to Seamlessly Integrate Spring Boot with MongoDB: A Step‑by‑Step Guide

This guide explains how to integrate MongoDB into a Spring Boot application, covering dependency setup, connection configuration, entity and repository creation, service and controller implementation, and optional sharding or replica‑set configurations.

1. Add Dependencies

<dependencies>
   <!-- MongoDB driver -->
   <dependency>
       <groupId>org.mongodb</groupId>
       <artifactId>mongodb-driver-sync</artifactId>
       <version>4.4.0</version>
   </dependency>
   <!-- Spring Data MongoDB -->
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-data-mongodb</artifactId>
       <version>2.6.2</version>
   </dependency>
</dependencies>

2. Configure MongoDB Connection

spring.data.mongodb.uri=mongodb://username:password@localhost:27017/myDatabase

3. Create Entity Class

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

@Document(collection = "users")
public class User {
    @Id
    private String id;
    private String name;
    private int age;
    // Getters and setters
}

4. Create Repository Interface

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends CrudRepository<User, String> {
}

5. Service Layer Using Repository

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public User save(User user) {
        return userRepository.save(user);
    }

    public User findById(String id) {
        return userRepository.findById(id).orElse(null);
    }
    // Other CRUD methods
}

6. Controller Layer Handling HTTP Requests

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping
    public User save(@RequestBody User user) {
        return userService.save(user);
    }

    @GetMapping("/{id}")
    public User findById(@PathVariable String id) {
        return userService.findById(id);
    }
}

7. Optional: Sharding Configuration

Sharding distributes collections across multiple servers to improve performance. Add sharding properties in application.properties or application.yml and create a configuration class.

spring.data.mongodb.shard-strategy=org.springframework.data.mongodb.core.shard.BackwardCompatibleShardingStrategy
spring.data.mongodb.target-db-config.default.mongo-uri=mongodb://localhost:27017/mydb
spring.data.mongodb.target-db-config.default.database=mydb
spring.data.mongodb.target-db-config.shard-targets={"ds"=>0,"target"=>"mydb_${0..199}"}
@Configuration
public class MongoDBConfiguration {
    @Bean
    public ShardingDataSource shardingDataSource() {
        // Create a sharding data source
        // ...
    }

    @Bean
    public MongoDatabaseFactory mongoDatabaseFactory() {
        // Create a MongoDatabaseFactory instance
        // ...
    }
}

8. Optional: Replica Set Configuration

Replica sets provide data redundancy and read/write scaling. Define replica‑set properties and a configuration class.

spring.data.mongodb.replica-set=myReplicaSet
spring.data.mongodb.host=mongodb://localhost:27017
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=mydb
@Configuration
public class MongoDBConfiguration {
    @Bean
    public MongoClient mongoClient() {
        // Create a MongoClient instance
        // ...
    }
}

Ensure the MongoDB service is running, entity fields match database fields, and the appropriate Spring Data MongoDB dependencies are included in pom.xml:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

With these steps, a basic Spring Boot application can interact with MongoDB, and you can extend it with sharding or replica‑set features as needed.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

JavaBackend DevelopmentshardingSpring BootMongoDBdatabase integrationReplica Set
MaGe Linux Operations
Written by

MaGe Linux Operations

Founded in 2009, MaGe Education is a top Chinese high‑end IT training brand. Its graduates earn 12K+ RMB salaries, and the school has trained tens of thousands of students. It offers high‑pay courses in Linux cloud operations, Python full‑stack, automation, data analysis, AI, and Go high‑concurrency architecture. Thanks to quality courses and a solid reputation, it has talent partnerships with numerous internet firms.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.