Spring Boot está construido en la parte superior del resorte y contiene todas las características del resorte. Y se está convirtiendo en el favorito de los desarrolladores en estos días debido a su rápido entorno listo para producción que les permite concentrarse directamente en la lógica en lugar de luchar con la configuración y la instalación. Spring Boot es un marco basado en microservicios y crear una aplicación lista para producción lleva muy poco tiempo. Las siguientes son algunas de las características de Spring Boot:
- Permite evitar la configuración pesada de XML que está presente en primavera.
- Proporciona fácil mantenimiento y creación de puntos finales REST
- Incluye servidor Tomcat incorporado
- La implementación es muy fácil, los archivos war y jar se pueden implementar fácilmente en el servidor tomcat
Para obtener más información, consulte este artículo: Introducción a Spring Boot . En este artículo, discutiremos cómo usar MongoRepository para administrar datos en una aplicación Spring Boot.
MongoRepositorio
MongoRepository es una interfaz proporcionada por Spring Data en el paquete org.springframework.data.mongodb.repository . MongoRepository amplía las interfaces PagingAndSortingRepository y QueryByExampleExecutor que amplían aún más la interfaz CrudRepository . MongoRepository proporciona todos los métodos necesarios que ayudan a crear una aplicación CRUD y también admite los métodos de consulta derivados personalizados.
Sintaxis:
public interface MongoRepository<T,ID> extends PagingAndSortingRepository<T,ID>, QueryByExampleExecutor<T>
Dónde:
- T: tipo de dominio que administra el repositorio (generalmente el nombre de clase de la entidad/modelo)
- ID: Tipo de id de la entidad que administra el repositorio (Generalmente la clase contenedora de su @Id que se crea dentro de la clase Entidad/Modelo)
Ilustración:
public interface BookRepo extends MongoRepository<Book, Integer> {}
Métodos
Algunos de los métodos más importantes que están disponibles dentro de JpaRepository se detallan a continuación.
Método 1: saveAll(): Guarda todas las entidades dadas.
Sintaxis:
<S extends T> List<S> saveAll(Iterable<S> entities)
Parámetros : Entidades, no deben ser nulas ni deben contener nulas.
Tipo de devolución : las entidades guardadas; nunca será nulo. El Iterable devuelto tendrá el mismo tamaño que el Iterable pasado como argumento.
Excepción lanzada : IllegalArgumentException en caso de que las entidades dadas o una de sus entidades sea nula.
Método 2: insert(): Inserta la entidad dada. Supone que la instancia es nueva para poder aplicar optimizaciones de inserción. Utilice la instancia devuelta para otras operaciones, ya que la operación de guardar podría haber cambiado la instancia de la entidad por completo.
Sintaxis:
<S extends T> S insert(S entity)
Parámetros : entidad – no debe ser nulo
Tipo de devolución : la entidad guardada
Método 3. findAll(): Devuelve todas las instancias del tipo.
Sintaxis:
Iterable<T> findAll()
Tipo de devolución : Todas las entidades
Implementación:
Haremos una aplicación Spring Boot que administre una entidad Libro con MongoRepository. Los datos se guardan en la base de datos MongoDB. Usamos un controlador RESTful.
Paso 1: cree un proyecto Spring Boot con IntelliJ IDEA y cree un proyecto Spring Boot.
Paso 2: agregue la siguiente dependencia
- Telaraña de primavera
- MongoDB
- Lombok
- Herramientas de desarrollo
A continuación se muestra el código completo para el archivo pom.xml .
XML
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.globallogic</groupId> <artifactId>spring-mongodb</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-mongodb</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <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.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </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> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
Paso 3 : cree 3 paquetes y cree algunas clases e interfaces dentro de estos paquetes como se ve en la imagen a continuación
- modelo
- repositorio
- controlador
Nota :
- Icono verde redondeado ‘I’ Los botones son interfaz
- Los botones ‘C’ de icono redondeado azul son clases
Paso 4: dentro del paquete de entidad
Creando una clase POJO simple dentro del archivo Book.java.
Java
// Java Program to Illustrate Book File // Importing required classes import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; // Annotations @Data @NoArgsConstructor @AllArgsConstructor @Document(collection = "Book") // Class public class Book { // Attributes @Id private int id; private String bookName; private String authorName; }
Paso 5: dentro del paquete del repositorio
Cree una interfaz simple y nombre la interfaz como BookRepo . Esta interfaz ampliará el MongoRepository como hemos discutido anteriormente.
Java
// java Program to Illustrate BookRepo File import com.globallogic.spring.mongodb.model.Book; import org.springframework.data.mongodb.repository.MongoRepository; public interface BookRepo extends MongoRepository<Book, Integer> { }
Paso 6: dentro del paquete del controlador
Dentro del paquete, cree una clase llamada BookController .
Java
import com.globallogic.spring.mongodb.model.Book; import com.globallogic.spring.mongodb.repository.BookRepo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; // Annotation @RestController // Class public class BookController { @Autowired private BookRepo repo; @PostMapping("/addBook") public String saveBook(@RequestBody Book book){ repo.save(book); return "Added Successfully"; } @GetMapping("/findAllBooks") public List<Book> getBooks() { return repo.findAll(); } @DeleteMapping("/delete/{id}") public String deleteBook(@PathVariable int id){ repo.deleteById(id); return "Deleted Successfully"; } }
Paso 7: a continuación se muestra el código para el archivo application.properties
server.port = 8989 # MongoDB Configuration server.port:8989 spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=BookStore
Paso 8: Dentro de MongoDB Compass
Vaya a su MongoDB Compass y cree una base de datos llamada BookStore y dentro de la base de datos cree una colección llamada Book como se ve en la imagen de abajo
Ahora ejecute su aplicación y probemos los puntos finales en Postman y también consulte nuestro MongoDB Compass.
Probando el Endpoint en Postman
Extremo 1: POST – http://localhost:8989/addBook
Punto final 2: GET – http://localhost:8989/findAllBooks
Extremo 3: ELIMINAR – http://localhost:8989/delete/1329
Finalmente, MongoDB Compass es como se muestra en la imagen a continuación como se muestra a continuación de la siguiente manera:
Publicación traducida automáticamente
Artículo escrito por AmiyaRanjanRout y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA