Java Spring: Como funciona - JavieraSaezLeon/buscador_backend GitHub Wiki

Módulos

Spring es bastante grande, por ello el proyecto esta dividido en módulos. No siempre se utiliza en un proyecto todo lo que tiene spring. Particularmente para la parte web se utilizó Spring MVC.

Spring tiene unos 20 módulos:

Se utilizó también Maven como gestor de dependencias. Todos los artefactos de Spring se encuentran en el repositorio central. Como utilizamos el módulo Spring MVC no fue necesario saber que dependencias tiene, ya con Maven se especificó que ibamos usar spring-mvc:

<dependencies>
   <dependency>
      <groupid>org.springframework</groupid>
      <artifactid>spring-mvc</artifactid>
      <version>3.0.0.RELEASE</version>
      <scope>runtime</scope>
   </dependency>
</dependencies> 

Inversión de control e inyección de dependecias en Spring

Inversión de control es una expresión que se usa para referirse al cambio en el flujo de ejecución y vida de los objetos con respecto a la programación tradicional, básicamente de lo que se trata es de invertir la forma en que se controla la aplicación, lo qué antes dependía del programador, como por ejemplo, el orden en que se llaman los métodos para darle un comportamiento particular a la aplicación, ahora depende completamente de otro ente, en este caso, el framework, todo esto con la finalidad de crear aplicaciones más complejas y con funcionamientos más encapsulados y automáticos.

La inyección de dependencia, es un tipo de inversion de control, donde el manejo de las propiedades de un objeto son inyectadas a través de un constructor, un setter, un servicio, etc. Creando de esta manera un control diferente para un comportamiento más conveniente en nuestra aplicación, como se mencionó anteriormente.

Sabiendo esto, una de las caracteristicas principales de spring framework es el Spring container. El Spring Container es un IoC Container (Contenedor de Inversion de control), estos son frameworks o partes de un framework, en este caso, que se encargan de realizar inyección de dependencia sin la necesidad de realizar la definición en java a través de archivos de metadata, por ejemplo un xml.

Este IOC container se encargará de crear los objetos, relacionarlos, configurarlos y manejar su ciclo de vida completo, desde la creación de estos hasta su destrucción, es por esto que se usa el término Inversion of control en spring, porque como dijimos anteriormente, el Spring container será el que controle una gran parte de la creación de los objetos y de la inyección de dependencia en estos.

En nuestro caso tenemos la clase BOOK que corresponde a la tabla de la base de datos BX-BOOK es:

public class BX_Books {
  
    @Id
    @Column(name = "isbn")
    private String isbn;
    private String booktitle;
    private String bookauthor;
    private int yearofpublication;
    private String publisher;
    private String imageurls;
    private String imageurlm;
    private String imageurll;

Donde en los controladores, se inyecta la dependencia

public class BookController {
    //paso4
    //Instancia la clase, inyeccion de dependencia
    @Autowired
    BookServiceInterface bookServiceInterface;
    //Crea un metodo post
    @ResponseStatus(HttpStatus.OK)
    @PostMapping(value = "/books/id")
    public List<BX_Books> getById(@RequestBody Query query) {
        List<BX_Books> books = bookServiceInterface.getBooks(query);
        return books;
    }
    
    @ResponseStatus(HttpStatus.ACCEPTED)
    @GetMapping(value = "/books")
    public List<BX_Books> getAll() {
        List<BX_Books> books = bookServiceInterface.getAll();
        return books;
    }

Esto retorna una url que será la encargada de consultar el front-end, a traves de la /book esta podrá a través de un POST de la búsqueda, retornar lo necesario.

⚠️ **GitHub.com Fallback** ⚠️