PROYECTO SPRING CORE

MINI-TIENDA DE LIBROS

En esta mini tienda de libros he implementado 7 basicas funciones para la tienda, no lo he echo por comandos por motivos de tiempo y simplicidad de la aplicacion.

Procedimiento

* Los datos los he buscado por internet, es un fichero json (libros.json) lo he parseado empeze a controlar algunos campos para evitar muchas exepciones inecesarias porque algunos objetos del json no existian para todos los libros.

* Creo 2 interfaces donde basicamente creo los metodos generales, despues en la otra interfaz introduzco los mas especificos para cada libro.

* Existen 2 clases mas que implementan las interfaces, que es donde implementaremos la primera capa de abstraccion en nuestras funciones.

* Por ultimo la clase servicio que es donde realizaremos la parte mas grande de la logica que es la busquecada mas la comparacion segun lo que necesitemos hacer por cada metodo.

Creo una clase Tienda donde creo el menu e introduzco varias funciones para el usuario.

Digrama de la app

OBSERVACIONES

El proyecto necesita algunas mejoras, como por ejemplo la simplicidad del codigo y sobretodo la restrocturacion ya que me gustaria indigar mas en las clases y limpiar mas el codigo.

La clase Predicate ha sido muy util la verdad es que no sabia que era hasta que empece a utilizarlo.

Lamdbas es muy importante tanto como el predicate en este ejercicio te ayuda a simplificar mucho el codigo en varias lineas.

Anotaciones

Autowired

Tiene el mismo efecto que la configuracion via XML

Busca un bean y lo inyecta en la depencia

Se realiza un autocableado byType

*Donde lo podemos usar*

Lo podemos utilizar en un metodo setter

```java @Autowired public void setPeliculas(PeliculasServicio peliculasServicio){....} ```

Definicion en la propiedad

```java @Autowired private PeliculaServicio peliculaServicio; ```

En el constructor

```java @Autowired public PeliculaServicio(PeliculaServicio){....} ```

Ejemplo en el xml

```xml ```

Ejemplo del main

```java // Necesitamos el bean de servicios para printar por pantalla la logica PeliculaServicio peliculaService = appContext.getBean(PeliculaServicio.class); peliculaService.peliculasPorGenero("Drama").forEach(System.out::println); appContext.close(); ```