just technology?
[ start | index | login or register ]
Created by molpe. Last edited by molpe, one year and 200 days ago. Viewed 2,340 times. #4
[diff] [history] [rdf]

Spring IoC

Descripción

IoC (Inversion of Control, muchas veces llamado Dependency Injection, DI, aunque no es exactamente lo mismo) es un patrón de diseño por el cual se intenta limitar el acoplamiento entre las distintas partes de nuestro software.

Siguiendo este patrón, la creación y la destrucción de objetos, así como los enlaces entre objetos no la tienen los propios objetos, sino que una "entidad" externa, normalmente llamado contenedor, es el encargado de instanciarlos y establecer las referencias entre ellos. Eliminaremos las sentencias "new" de nuestro código sustituyéndolas por llamadas al contenedor que se encargará de instanciar el objeto así como todas sus dependencias.

Por ejemplo, si un coche tiene un motor, cuatro ruedas, y un volante, en lugar de instanciar un coche, y añadirle esas partes nosotros mismos por código, le indicaremos al contenedor de IoC que nos devuelva un coche, y él sólo se encargará de instanciar y asignar las partes si por configuración le hemos indicado que son dependencias del coche.

Aunque no es obligatorio, Spring recomienda el uso de su contenedor de IoC para la utilización de todos sus módulos, planteándolo como base. En un XML definiremos todos los beans (propios y de terceros), obteniéndolos a partir del contexto.

<beans>
   <bean id="coche"
         class="com.javaconganas.example.Car">
      <property name="engine" ref="motor" />
      <property name="steeringWheel" ref="volante" />
   </bean>
   <bean id="volante"
         class="com.javaconganas.example.SteeringWheel">
   </bean>
   <bean id="motor"
         class="com.javaconganas.example.Engine">
      <property name="cc" value="2000" />
      <property name="combustible" value="diesel" />
   </bean>
   …
</beans>

ApplicationContext ctx = …
Car car = (Car)ctx.getBean("coche");
SteeringWheel sw = car.getSteeringWheel();
sw.turnLeft(45);

Prerrequisitos

Referencias

Checklist

¿Y ahora?

no comments | post comment

Help
Formatting: snipsnap-help.

Más...

< July 2008 >
SunMonTueWedThuFriSat
12345
6789101112
13141516171819
20212223242526
2728293031

XHTML 1.0 validated
CSS validated
RSS 2.0 validated
RSS Feed

Powered by SnipSnap

Copyright 2006-2008 Cada página es propiedad y responsabilidad de su editor.