【发布时间】:2021-07-01 07:46:27
【问题描述】:
我是 SpringBoot 新手,我正在尝试将我的 SpringBoot 应用程序连接到 MongoDB。 GET 请求工作正常,但 POST 请求在数据中添加了我不想要的“_class”字段。我做了一些搜索,发现我必须添加一个@Configuration 类来解决这个问题,但是当我添加@Configuration 类时,我收到以下错误:
Field mongoDbFactory in com.example.demo.configuration.MongoConfig required a bean of type 'org.springframework.data.mongodb.MongoDbFactory' that could not be found.
我的配置类代码如下:-
MongoConfig.java :-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
@Configuration
public class MongoConfig {
@Autowired
private MongoDbFactory mongoDbFactory;
@Autowired
private MongoMappingContext mongoMappingContext;
@Bean
public MappingMongoConverter mappingMongoConverter() {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver,
mongoMappingContext);
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
return converter;
}
}
Controller.java :-
import com.example.demo.model.Todo;
import com.example.demo.services.TodoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class Controller {
@Autowired
private TodoService todoService;
@GetMapping("/")
public List<Todo> getTodos() {
return todoService.getTodos();
}
@PostMapping("/")
public Todo addTodo(@RequestBody Todo todo) {
return todoService.addTodo(todo);
}
}
TodoService.java :-
import com.example.demo.model.Todo;
import java.util.List;
public interface TodoService {
public List<Todo> getTodos();
public Todo addTodo(Todo todo);
}
TodoServiceImplementation.java :-
import com.example.demo.model.Todo;
import com.example.demo.repository.TodoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TodoServiceImplementation implements TodoService{
@Autowired
private TodoRepository todoRepository;
@Override
public List<Todo> getTodos() {
return todoRepository.findAll();
}
@Override
public Todo addTodo(Todo todo) {
return todoRepository.save(todo);
}
}
【问题讨论】:
标签: java spring mongodb spring-boot