【发布时间】:2021-02-17 11:52:29
【问题描述】:
[MacOS 大苏尔] 我正在尝试使用 Spring、MongoDB 和 PostgreSQL 创建一个混合系统数据库。我没有为 PSQL 实现任何东西,但我已经为 MongoDB 做了一切完美的事情。问题是它没有向 MongoDB (v4.4) 添加任何记录。甚至没有添加 LiveEventDB。也许是因为 Spring 没有找到存储库文件的事实 我通过 brew services start mongodb-community 启动 MongoServer。 然后我在 Intellij 编辑器上运行项目,日志很好。一切,除了这个,我认为:
在 3 毫秒内完成 Spring Data 存储库扫描。找到 0 个 MongoDB 存储库接口。
虽然我已经创建了一个repository interface java文件。
结构是: 【项目包结构】:https://i.stack.imgur.com/SCT1a.png
----文件----
application.properties
server.port = 8080
spring.data.mongodb.database=LiveEventsDB
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
DBRepository.java
@Repository
public interface DBRepository extends MongoRepository<LiveEvents, String> {
}
LiveEvents.java
@Document(collation = "LiveEvents")
public class LiveEvents {
@Id
private String rowID;
@Indexed(direction = IndexDirection.ASCENDING)
private Integer EID;
...
DBAdder.java
@Component
public class DBAdder implements CommandLineRunner {
// private LiveEvents liveEvents;
private DBDriver DBdriver;
public DBAdder(DBDriver dbDriver) {
this.DBdriver = dbDriver;
}
@Override
public void run(String... args) throws Exception {
LiveEvents liveEvents = new LiveEvents(
1,
new FormTemplates[]{FormTemplates.SLIDER_FORM, FormTemplates.COMMENT_BLOCK_FORM}
);
this.DBdriver.deleteAll();
this.DBdriver.save(liveEvents);
}
}
DBController.java
@RestController
@RequestMapping("/LiveEvents")
public class DBController {
private DBDriver driver;
public DBController(DBDriver driver) {
this.driver = driver;
}
@GetMapping("/all")
public List<LiveEvents> getAll(){
List<LiveEvents> events = this.driver.findAll();
return events;
}
}
忘记添加了:
主应用
@SpringBootApplication
@EnableMongoRepositories(basePackages = {"uk.co.group35.app.events.controllers"}, mongoTemplateRef="DBDriver")
public class LiveFeedbackApplication {
public static void main(String[] args) {
SpringApplication.run(LiveFeedbackApplication.class, args);
}
}
POM.XML
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
【问题讨论】:
-
请与 sping-boot 依赖项共享您的 pom.xml 的 sn-p。
-
@SergVasylchak,现在发布在主要问题中。谢谢
-
, mongoTemplateRef="DBDriver"将其从您的@EnableMongoRepositories中删除。我不完全确定,但是 MongoTemplate 和您的 MongoRepository 的 bean 命名可能存在冲突 -
@SergVasylchak,嗯...如果我将 DBDriver 类命名为 DBRepository 会更好吗?我这样做了,但什么也没发生
-
目的是消除可能的碰撞,所以是的,应该没问题。如果没有发生任何事情,我们仍然会丢失未检测到存储库的原因。
标签: java spring mongodb spring-boot