A continuación llevaremos a cabo la codificación en C#.Net (VS 2K5)
Interface:
namespace SpringExample.Abstract
{
public interface IServicioFinanciero
{
string Operacion();
}
}
Servicios:
namespace SpringExample.Concrete
{
public class ServicioFinancieroEspecial : IServicioFinanciero
{
public ServicioFinancieroEspecial() { }
public string Operacion()
{
return string.Format(«{0}», «Servicio Financiero Especial.»);
}
}
}
namespace SpringExample.Concrete
{
class ServicioFinancieroSimple : IServicioFinanciero
{
public ServicioFinancieroSimple() { }
public string Operacion()
{
return string.Format(«{0}», «Servicio Financiero Simple.»);
}
}
}
Controlador:
using System;
using System.Collections.Generic;
using SpringExample.Abstract;
namespace SpringExample
{
public class ControladorFinanciero
{
IServicioFinanciero _servicio;
public IServicioFinanciero Servicio
{
set { _servicio = value; }
}
public ControladorFinanciero() {}
public string OperacionFinanciera()
{
return string.Format(«Controlador Ejecutando: {0} «, _servicio.Operacion());
}
}
}
El programa principal de la aplicación.
using System;
using System.Collections.Generic;
using Spring.Context;
using Spring.Context.Support;
namespace SpringExample
{
class Program
{
static void Main(string[] args)
{
IApplicationContext ctx = ContextRegistry.GetContext();
ControladorFinanciero controlador = ctx.GetObject(«ControladorFinanciero») as ControladorFinanciero;
Console.WriteLine(controlador.OperacionFinanciera());
Console.ReadLine();
}
}
}
Tal como se muestra en el código, el primer paso es tener una referencia al contenedor de objetos, y posteriormente solicitarle al contenedor de objetos el objeto deseado, en este caso ControladorFinanciero, el cual será instanciado según las especificaciones que se muestran en el archivo de configuración detallado a continuación.
Finalmente definimos el archivo de configuración de la aplicación (App.config), de la siguiente manera:
<?xml version=«1.0« encoding=«utf-8« ?>
<configuration>
<configSections>
<sectionGroup name=«spring«>
<section name=«context«
type=«Spring.Context.Support.ContextHandler, Spring.Core«/>
<section name=«objects« type=«Spring.Context.Support.DefaultSectionHandler, Spring.Core« />
</sectionGroup>
</configSections>
<spring>
<context>
<resource uri=«config://spring/objects«/>
</context>
<objects xmlns=«http://www.springframework.net«>
<object id=«ServicioFinancieroSimple« type=«SpringExample.Concrete.ServicioFinancieroSimple, SpringExample« />
<object id=«ServicioFinancieroEspecial« type=«SpringExample.Concrete.ServicioFinancieroEspecial,SpringExample«/>
<object id=«ControladorFinanciero« type=«SpringExample.ControladorFinanciero, SpringExample« >
<property name =«Servicio« ref =«ServicioFinancieroSimple«></property>
</object >
</objects>
</spring>
</configuration>
Ejecutamos nuestra aplicación y tendremos el siguiente resultado obtenido por el controlador:
Como habrán podido apreciar no se ha codificado la instanciación del servicio desde dentro del la clase controladora, todo a ha sido hecho usando Dependency Injection, en este caso específicamente a través de Setter Injection (Inyección a través de propiedades).