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?