// src/main/java/com/example/iwreactspring/service/TodoService.java paquete com.example.iwreactspring.service; importar java.util.List; importar java.util.ArrayList; importar com.example.iwreactspring.model.TodoItem; importar org.springframework.stereotype.Service; importar org.springframework.beans.factory.annotation.Autowired; importar com.mongodb.client.MongoClient; importar com.mongodb.client.MongoClients; importar com.mongodb.client.MongoCollection; importar com.mongodb.client.MongoDatabase; importar org.bson.codecs.configuration.CodecRegistry; importar org.bson.codecs.pojo.PojoCodecProvider; importar org.bson.Document; importar com.example.iwreactspring.repository.TodoRepository; @Service clase pública TodoService { @Autowired TodoRepository privado todoRepository; lista pública getTodos() { return todoRepository.findAll(); } public TodoItem createTodo(TodoItem newTodo) { TodoItem saveTodo = todoRepository.save(newTodo); return saveTodo; } public TodoItem getTodo(String id) { return todoRepository.findById(id).orElse(null); } public boolean deleteTodo(String id) { TodoItem todoToDelete = getTodo(id); if (todoToDelete != null) { todoRepository.deleteById(id); return true; } else { return false; } } public TodoItem saveTodo(TodoItem todoItem) { TodoItem saveTodo = todoRepository.save(todoItem); return saveTodo; } } Anotamos esta clase con @Service para indicarla como una clase de servicio. Nuevamente, esto no es estrictamente obligatorio, porque Spring puede usar la clase como un bean inyectado sin la anotación, pero anotar la clase hace que las cosas sean más descriptivas. A continuación, usamos @AutoWired para traer la clase TodoRepository. Esto será rellenado por Spring en base al tipo de clase, que es el com.example.iwreactspring.repository.TodoRepository que vimos antes. De forma predeterminada, Spring usa inyección singleton (una instancia de la clase bean inyectada), que funciona bien para nosotros. Operaciones CRUD en la clase de servicio Cada método en esta clase está dedicado a realizar una operación CRUD usando el repositorio. Por ejemplo, necesitamos una forma de obtener todas las tareas pendientes en la base de datos, y getTodos() lo hace por nosotros. La clase Repository también lo hace muy fácil: return todoRepository.findAll() devuelve todos los registros (también conocidos como documentos) en la colección de tareas pendientes (también conocida como base de datos).