unidades:10_servidor:04_inyecciondependencias
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| unidades:10_servidor:04_inyecciondependencias [2014/08/31 00:10] – admin | unidades:10_servidor:04_inyecciondependencias [2014/09/03 11:56] (actual) – [La solución] admin | ||
|---|---|---|---|
| Línea 2: | Línea 2: | ||
| La inyección de dependencias (en inglés Dependency Injection, DI) es un patrón de diseño sencillo de usar aunque quizás resulte algo muy novedoso para algunas personas. | La inyección de dependencias (en inglés Dependency Injection, DI) es un patrón de diseño sencillo de usar aunque quizás resulte algo muy novedoso para algunas personas. | ||
| - | La DI intenta resolver el problema que hay en el código del ejemplo de JSON de hace 2 temas: | + | |
| + | ===== El problema ===== | ||
| + | La inyección de dependencias | ||
| <sxh java; | <sxh java; | ||
| Línea 33: | Línea 35: | ||
| El problema es que tenemos dentro del código la implementación que usamos del interfaz y si usamos el interfaz para no saber nada sobre su implementación es un sin sentido que tengamos en el propio código una referencia a la implementación. Además is quisiéramos cambiar la implementación deberíamos ir por todo el código buscando donde se usa para cambiarlo. | El problema es que tenemos dentro del código la implementación que usamos del interfaz y si usamos el interfaz para no saber nada sobre su implementación es un sin sentido que tengamos en el propio código una referencia a la implementación. Además is quisiéramos cambiar la implementación deberíamos ir por todo el código buscando donde se usa para cambiarlo. | ||
| - | La solución a todo ésto es la **Inyección de Dependencias** que evita que nuestro código tenga referencia | + | ===== La solución ===== |
| + | La solución a todo ésto es la **Inyección de Dependencias** que evita que nuestro código tenga referencias | ||
| - | Vamos a modificar el controlador del tema anterior de forma que usemos '' | + | Vamos a modificar el controlador |
| - | <sxh java; | + | <sxh java; |
| @Controller | @Controller | ||
| public class UsuarioController { | public class UsuarioController { | ||
| Línea 52: | Línea 55: | ||
| } | } | ||
| </ | </ | ||
| - | Vemoa que ahora el controlador en vez de mostrar en la página web el texto "Hola mundo" retornara el JSON: | + | Vemos que ahora el controlador en vez de mostrar en la página web el texto "Hola mundo" retornara el JSON: |
| {" | {" | ||
| Línea 77: | Línea 80: | ||
| </ | </ | ||
| </ | </ | ||
| - | Línea 12: Hemos añadido la clase '' | + | |
| | | ||
| ¿Como sabe Spring que esa clase se debe inyectar si solicitan el interfaz '' | ¿Como sabe Spring que esa clase se debe inyectar si solicitan el interfaz '' | ||
| Línea 99: | Línea 102: | ||
| } | } | ||
| </ | </ | ||
| - | | + | |
| + | * Línea 6: Declaramos ahora la propiedad privada '' | ||
| + | |||
| + | Es decir que ahora la configuración sobre de implementaciones debemos usar está centralizada en el fichero '' | ||
| + | |||
| + | <note important> | ||
| + | Una cosa importante a tener en cuenta es que spring solo va a crear un única instancia de objeto a inyectar en toda la aplicación por lo que hay que tener cuidado con mantener un estado en el objeto o controlar el acceso de varias threads a la vez. | ||
| + | </ | ||
| + | ===== Ejemplo ===== | ||
| + | El ejemplo de esta unidad es exactamente lo que acabamos de contar pero es un nuevo proyecto llamado " | ||
| + | Lo único que debes recordar es que se han añadido también las librerías de Jackson y Spring. | ||
| + | |||
| + | < | ||
| + | Este ejemplo se encuentra en git en [[https:// | ||
| + | </ | ||
| + | |||
unidades/10_servidor/04_inyecciondependencias.1409436620.txt.gz · Última modificación: por admin
