Repaso
English

¿Qué estilo de inyección se recomienda en general en Spring?

Opciones

  1. Inyección por campo con @Autowired en los campos
  2. Inyección por constructor con campos final (Opción correcta)
  3. Inyección por setter en cada bean opcional
  4. Campos static que asigna el contenedor

Respuesta

Inyección por constructor

Por qué

Se prefiere la inyección por constructor porque:

  • Las dependencias pueden ser final, así que el objeto siempre queda completo.
  • Es obvio lo que necesita una clase (mira el constructor).
  • Los unit tests pueden crear la clase con new y pasar mocks, sin Spring.
  • Las dependencias circulares aparecen de inmediato.

La inyección por campo oculta las dependencias y necesita reflection o Spring para probarse. Con un solo constructor ni siquiera necesitas @Autowired.

Recuerda

Prefiere la inyección por constructor.

Términos clave

Practica esta pregunta en Repaso