Antes de empezar

1

Pasos para aprender Java Spring

2

驴Java sigue siendo gratuito?

3

Instalaci贸n de ambiente de desarrollo: Linux Ubuntu

4

Instalaci贸n de ambiente de desarrollo: macOS

5

Instalaci贸n de ambiente de desarrollo: Windows

Introducci贸n a Spring boot

6

驴Qu茅 es y qu茅 usaremos de Spring?

7

Conocer qu茅 es una aplicaci贸n autocontenida

8

Crear nuestra aplicaci贸n con Spring Initializr

9

Hola mundo con Spring Boot

10

Configurar Spring Boot

11

Crear la estructura del proyecto

Spring Data

12

驴Qu茅 es JPA?

13

Conocer qu茅 es Spring Data

14

Conectar la base de datos a nuestra aplicaci贸n

15

Mapear las tablas como clases

16

Crear Entity cuando su clave primaria es compuesta

17

Mapear relaciones entre clases

18

Usar la interface CrudRepository

19

Query Methods

Construyendo nuestra API

20

Implementar la anotaci贸n @Repository

21

驴Qu茅 es el patr贸n Data Mapper y qu茅 resuelve?

22

Orientar nuestra API al dominio con MapStruct

23

Orientar nuestro repositorio a t茅rminos del dominio

24

Inyecci贸n de dependencias

25

Implementar la anotaci贸n @Service

26

Implementar la anotaci贸n @RestController

27

Exponer nuestra API

Mejorando nuestra API

28

Controlar las respuestas HTTP

29

Crear el dominio de compras

30

Mapear el dominio de compras

31

Crear el repositorio de compras

32

Probando nuestros servicios de compras

33

Documentar nuestra API con Swagger

Spring Security

34

Configurar la seguridad de nuestra API con Spring Security

35

Generar un JWT

36

Autenticaci贸n con JWT

37

Autorizaci贸n con JWT

Despliegue de nuestra aplicaci贸n

38

Desplegar nuestra API desde la ventana de comandos

39

Desplegar nuestra base de datos con Heroku

40

Desplegar nuestra API con Heroku

41

Conclusiones y despedida del curso

A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Curso de Java Spring

Curso de Java Spring

Alejandro Ram铆rez

Alejandro Ram铆rez

Inyecci贸n de dependencias

24/41
Recursos

Aportes 23

Preguntas 9

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Por favor, preferir la inyecci贸n de dependencias a nivel del constructor. Para m谩s informaci贸n leer este enlace.

Inyecci贸n de dependencias: pasar la dependencia a la clase que lo va a utilizar en lugar de crearla internamente dentro esa clase. Esto con el fin de no acoplar la clase a la implementaci贸n que esta utilizando.
Inversi贸n de control: es un framework quien toma control de los objetos. En este caso Spring. El cual se encarga de crear y administrar instancias de objetos que se conocen como builds o componentes.
Entonces Spring usa la notaci贸n @Autowired para la inyecci贸n de dependencias.

Excelente explicacion, yo lo hacia porque un dia me dijeron que se debia hacer y ya. Me ha gustado mucho este curso.

Al agregar el @Autowired al ProductMapper me dice q ningun bean autowired se encontro en ProductMapper

Could not autowire,No beans of 'ProductMapper' type found

Hay que corregir el video, Solid no tiene inyeccion de Dependencias tiene es Inversion de dependencias, la cual es basada en relaciones abstractas, como lo consigues usando injeccion pero no son lo mismo y Solid no lo tiene como principio.

Me sale el siguiente error en respuestas anteriores dicen que cheque los getter y stter poir favor explicar bien sus respuestas sin utilizar lombok ya que eso no se esat usando en los videos gracias de antemano.

Si les aparece error de los atributos 鈥減roductos鈥 y 鈥渃ategoria鈥 no se preocupen por ahora, en la clase 鈥26. Implementar la anotaci贸n @RestController鈥 Jose comparte la soluci贸n

Solid

  • Single responsability
  • Open-closed
  • Liskov sustitution
  • Interface segregation
  • Dependency injection

隆Incrible!, no entend铆a el porque aveces mi API soltaba errores y siempre ten铆a que ver con las anotaciones adem谩s de la inyecci贸n de dependencias. Ahora s茅 que es necesario que hagan parte de Spring para inyectar las dependecias.

隆Gracias!

Al poner la inyecci贸n a nivel de campo, salio el siguiente mensaje en intellij 鈥淔ield injection is not recommended鈥, adjunto la conclusi贸n de un aporte en stackoverflow (https://stackoverflow.com/questions/39890849/what-exactly-is-field-injection-and-how-to-avoid-it)

Si se escoge la inyecci贸n de dependencias a nivel de constructor, entiendo que puedo o debo colocar a los atributos (aquellos que son Components de Spring) como final:

@Repository
public class ProductRepositoryImpl implements ProductRepository {
    private final ProductCrudRepository productCrudRepository;
    private final ProductMapper mapper;

    public ProductRepositoryImpl(ProductCrudRepository productCrudRepository, ProductMapper mapper) {
        this.productCrudRepository = productCrudRepository;
        this.mapper = mapper;
    }

    // more code

De ser as铆, se puede usar una facilidad de Lombok: @RequiredArgsConstructor para que se reduzca un poco el c贸digo.

@Repository
@RequiredArgsConstructor
public class ProductRepositoryImpl implements ProductRepository {
    private final ProductCrudRepository productCrudRepository;
    private final ProductMapper mapper;
    
    // more code

https://projectlombok.org/features/constructor

Sigue sorprendi茅ndome lo que se puede hacer en java

Una de las explicaciones mas sencillas y faciles de entender que que he visto sobre que es la inyeccion de dependencias.

se pone complicada la cosa xD

Que buena explicaci贸n Alejandro, no lo hab铆a comprendido tan bien.

SOLID hace referencia a la Inversion de Dependencia, que no es lo mismo (aunque si tiene que ver) con la** inyeccion de dependencia** que ofrese Spring. Por otro lado, la Inversion de control tiene que ver con el 鈥淧rincipio Holliwood鈥 (no nos llames, nosotros te llamamos) y no se limita solo a la inyeccion de dependencias鈥ara ampliar un poco simplementeo, espero que sirvan los comentarios. Muy buen curso !!

Sobres, verifiquen bien sus mapeos para que no anden viendo qu茅 anda mal durante horas como yo 馃槙

M谩s informaci贸n sobre @beans
https://www.baeldung.com/spring-bean

A quienes les salga error con eclipse y mapstructs
lo solucion茅 con dos cosas:

  1. Clic derecho sobre el proyecto -> propiedades -> Java Compiler -> Annotation Processing ->
    Se debe checkear Enable project specific settings
  2. Clic derecho sobre el proyecto -> propiedades -> Java Compiler -> Annotation Processing -> Factory Path ->
    Se debe checkear Enable project specific settings
    -> Add External Jar -> Aqu铆 buscar el jar del plugin es una ruta similar:
    C:\Users\pepito.gradle\caches\modules-2\files-2.1\org.mapstruct\mapstruct-processor\1.4.2.Final\e55bd90d51cddd638c07d5bd89fc7535d4e3d069\mapstruct-processor-1.4.2.Final

Ahora Aplicar y Cerrar

autowired en articulosRepository

El significado de la anotaci贸n.