gpt4 book ai didi

java - Spring - Mongodb 配置类路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:09 26 4
gpt4 key购买 nike

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

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> {
}

UserController - REST Controller

@RestController
public class UserController {

private final UserRepository userRepository;

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

Mongo配置

@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 注入(inject)到 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

最佳答案

移动到配置包后,默认的 @EnableMongoRepositories 目标已更改。或者更准确地说,基本包 已更改为 com.tryton.configs.*。 Spring 现在在此包中搜索 mongo 存储库。

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

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

确保您的 MongoConfig 是公开的。

关于java - Spring - Mongodb 配置类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40026453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com