CS2031:
Desarrollo Basado en Plataformas
Semana 03: API con Spring Boot
Contenido
- Java
- Dependency Injection (DI)
- Spring Boot
- Lab 02: Desarrollo de un API con Spring Boot
Contenido

Java - Hello World

Dependency Injection (DI)

Let's build a Notification Center !
Dependency Injection (DI)
Ventajas
- Desacoplación: Código más limpio y legible.
- Facilita el mantenimiento del código:
- No conoce el detalle de la implementación de sus dependencias.
- No necesita cambiar cuando lo hacen sus dependencias.
- Facilita el testeo (*)
Spring
¿Qué es Spring?
* Framework
* Open Source
* Modular (*)
¿Qué nos ofrece?
* Inyección de Dependencias
* MVC
* Seguridad
* Acceso a datos, etc.
¿Qué debemos configurar?
-
Cantidad de instancias de una clase.
- Identificar las instancias con un nombre específico
- Identificar las instancias con un nombre específico
- Dependencias que queremos resolver.
¿Cómo configuramos en Spring?
- Podemos usar:
- XML
- Anotaciones
- Ventajas de las Anotaciones:
- Simplicidad
- Mantenibilidad
- Flexibilidad
Pero...¿Qué son las anotaciones?
- Meta-información.
- Ejemplo: @Override, para sobrescribir un método.
- Las podemos usar:
- Previo a una firma de un método
- Previo a la declaración de una clase
- Previo a una parámetro en una función
- Previo a un atributo
public Class Position {
private Double x;
private Double y;
public Position(Double x, Double y) {
this.x = x;
this.y = y;
}
@Override
public boolean hashCode() {
return Objects.hash(x, y);
}
}
@Component
- Le informa a Spring que debe instanciar la clase.
- Por default, solo se creará una única instancia (Singleton).
- Se agrega previo a la declaración de una clase.
- Otras anotaciones con el mismo significado:
- @Service
- @Repository
@Component
public class PokemonService {
}
@Autowired
- Le informa a Spring que debe encargarse de resolver las dependencias.
- Se puede usar:
- Antes del constructor: (Recomendado) Resuelve todos los parámetros que recibe desde su instanciación.
- Previo al Setter: Usará el setter para inyectar la dependencia y solo usará los que tengan la anotación.
- Previo al atributo: No es recomendable, pero solo resuelve la inyección de dicho atributo.
@Component
public class PokemonService {
private final PokemonRepository repository;
private final OtraDependencia otraDependencia;
@Autowired
public PokemonService(PokemonRepository repository, OtraDependencia otraDependencia) {
this.repository = repository;
this.otraDependencia = otraDependencia;
}
}
@Bean & @Configuration
@Bean
Permite generar la construcción manual de ciertas instancias complejas.
@Configuration
Identificar la clase donde podremos agregar los Bean.
@Configuration
public class AppConfiguration {
@Bean
public Pokemon getPokemon() {
return new Pokemon("Pikachu");
}
}

Let's build!
Lab.02
References
- Spring
https://docs.spring.io/spring-framework/reference/
- Spring Boot
https://spring.io/projects/spring-boot
- Spring Projects
https://spring.io/projects
- Spring Annotations
https://www.baeldung.com/spring-core-annotations
- Despegar - JAV15
Desarrollo Basado en Plataformas - Spring Boot
By Jorge Rios
Desarrollo Basado en Plataformas - Spring Boot
- 198