You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot集成MongoDB启动报错No bean named 'mongoTemplate' available求助

问题根因

你的项目启动类LoginApplication中手动排除了MongoAutoConfiguration类,该类是Spring Boot MongoDB自动配置的核心实现,负责自动初始化MongoDB连接、创建mongoTemplate实例注入Spring容器。你将其排除后,容器中不会自动生成mongoTemplate Bean,而MongoRepository的实现依赖mongoTemplate,因此抛出找不到Bean的错误。
同时你的代码还有两个会导致后续运行报错的问题:

  • UserController中的UserRepository未加@Autowired注解,Spring不会自动注入依赖,运行调用接口会触发空指针异常
  • deleteUser接口的@DeleteMapping没有配置/{id}路径规则,调用时会返回404错误

修复步骤

1. 修改启动类注解

移除@EnableAutoConfiguration中对MongoAutoConfiguration的排除,修改后启动类代码如下:

package com.example.login;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;

@SpringBootApplication
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class,WebMvcAutoConfiguration.class})
public class LoginApplication {

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

}

如果你没有特殊需求不需要排除WebMvcAutoConfiguration,也可以直接删除整个@EnableAutoConfiguration注解,@SpringBootApplication默认已经包含自动配置能力。

2. 新增MongoDB连接配置

在项目的src/main/resources目录下的application.properties(如果是yml格式同理)中添加MongoDB连接配置,本地默认无密码Mongo配置示例:

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

如果你的MongoDB设置了账号密码,使用以下格式配置:

spring.data.mongodb.uri=mongodb://你的账号:你的密码@localhost:27017/要连接的数据库名?authSource=admin

3. 修复UserController代码

补全依赖注入注解和删除接口的路径配置:

package com.example.login.User;

import java.util.List;
import java.util.Optional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserRepository userRepository;

    @PostMapping("/addUser")
    public String addUser(@RequestBody User user) {
        userRepository.save(user);
        return "added user with id: " + user.getId();
    }
    
    @GetMapping("/getAllUsers")
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    @GetMapping("/getAllUsers/{id}")
    public Optional<User> getUser(@PathVariable String id) {
        return userRepository.findById(id);
    }
    
    @DeleteMapping("/removeUser/{id}")
    public String deleteUser(@PathVariable String id) {
        userRepository.deleteById(id);
        return "removed user with id: " + id;
    }
}

完成以上修改后,先启动本地MongoDB服务,再启动Spring Boot项目即可正常运行。

内容的提问来源于stack exchange,提问作者cspurdue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:09:02