Spring Boot+MongoDB应用启动报错:无法找到CarService类型Bean
搞定Spring Boot找不到CarService Bean的问题
嘿,看你这个报错,问题其实很明确:
APPLICATION FAILED TO START
Description: Field carService in main.Controller.CarController required a bean of type 'main.Service.CarService' that could not be found. Action: Consider defining a bean of type 'main.Service.CarService' in your configuration.
简单说就是Spring不知道CarService这个类的存在,没法把它做成可注入的Bean——因为你没给它加Spring的组件注解,导致容器扫描的时候直接跳过了它。
怎么修复?
给CarService加上@Service注解就行!这个注解是Spring专门给业务层类设计的,加了之后Spring的组件扫描器就会自动把它注册到容器里,这样控制器就能顺利注入了:
修改后的CarService.java代码:
package main.Service; import main.Dao.CarRepository; import main.Entity.Car; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; // 新增这个注解 import java.util.Collection; @Service // 加上这个,Spring就会接管这个类啦 public class CarService { @Autowired private CarRepository carRepo; public Collection<Car> getAllCars() { return carRepo.findAll(); } }
额外要确认的几个小细节
- 你的主启动类(应该在
main根包下对吧?)一定要有@SpringBootApplication注解——这个注解自带组件扫描功能,会自动扫描主类所在包及其子包下所有带注解的类。如果主启动类不在main根包下,得手动指定扫描路径:@SpringBootApplication(scanBasePackages = "main") - 你的
CarRepository是继承MongoRepository的接口,Spring Data MongoDB会自动帮你生成实现类并注册成Bean,这部分完全没问题,不用改 - 虽然当前报错和数据库配置无关,但等Bean问题解决后,可以再检查下
application.properties里的MongoDB连接串是否正确,确保能连上mLab的数据库
对了,你贴的代码里Main.java和CarController.java内容完全重复了,应该是粘贴时的小失误,这个不影响当前问题,后续整理代码时注意下就行~
内容的提问来源于stack exchange,提问作者Matt
相关产品推荐
相关产品推荐

