有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring Mongo配置类路径

我有以下简单的项目结构:

enter image description here

以下是这些文件的实现:

Tryton-启动类

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

UserRepository-Mongo存储库

public interface UserRepository extends MongoRepository<User, String> {
}

用户控制器-REST控制器

@RestController
public class UserController {

    private final UserRepository userRepository;

    @Autowired
    public UserController(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
}

蒙哥菲格

@Configuration
@EnableMongoRepositories
@ConfigurationProperties("foo")
class MongoConfig extends AbstractMongoConfiguration {

    @Value("${mongodb.host}")
    private String host;
    @Value("${mongodb.port}")
    private int port;
    @Value("${mongodb.databaseName}")
    private String databaseName;

    @Override
    protected String getDatabaseName() {
        return databaseName;
    }

    @Override
    public Mongo mongo() throws Exception {
        return new Mongo(host, port);
    }

}

这是一个非常简单的应用程序:我将UserRepository注入UserController。然后我在MongoConfig中配置MongoDB连接详细信息。现在一切正常。但是当我将MongoConfig移动到/configs包中时,问题出现了:

enter image description here

现在应用程序无法启动

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.tryton.controllers.UserController required a bean of type 'com.tryton.repositories.UserRepository' that could not be found.


Action:

Consider defining a bean of type 'com.tryton.repositories.UserRepository' in your configuration.

为什么MongoConfig位置的改变使spring无法将UserRepository识别为MongoRepository


共 (1) 个答案

  1. # 1 楼答案

    移动到配置包后,默认的@EnableMongoRepositories目标已更改。或者更准确地说,基本包已更改为^{。Spring正在搜索此软件包中的mongo存储库

    现在,您必须在@EnableMongoRepositories-注释中添加basePackages

    @Configuration
    @EnableMongoRepositories(basePackages = {"com.tryton.repositories"})
    @ConfigurationProperties("foo")
    public class MongoConfig extends AbstractMongoConfiguration {
          [...]
    }
    

    确保你的MongoConfig是公开的