Spring boot不向MongoDB添加记录



[MacOS Big Sur]我试图使用Spring, MongoDB和PostgreSQL创建一个混合系统数据库。我没有为PSQL实现任何东西,但我已经为MongoDB完美地完成了一切。问题是,它不添加任何记录到MongoDB (v4.4)。甚至没有添加LiveEventDB。也许是因为Spring没有找到存储库文件我通过启动MongoServer, brew services start mongodb-community.然后我在Intellij编辑器上运行项目,日志很好。所有的,除了这个,我认为:

在3 ms内完成Spring数据存储库扫描。发现0个MongoDB存储库接口

虽然我已经创建了一个存储库接口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>
@EnableMongoRepositories(basePackages = {"uk.co.group35.app.events.controllers"}, mongoTemplateRef="DBDriver")
  1. mongoTemplateRef是org.springframework.data.mongodb.core.MongoTemplate的bean名称,它可能与你的存储库的bean名称冲突。

  2. 如果您使用@EnableMongoRepositories#basePackages,请仔细检查和维护包结构。如果你的@SpringBootApplication注释类位于包结构的根目录,你可以直接提交basePackages

替换私有DBDriver;在Controller中,dbaddder to@ autowiredDBDriver

最新更新