Spring & ActionScript 3.0 (en 3 pasos)

ActionScript, Spring Framework No Comments »

El ya famoso Spring Framework ahora también llega al mundo de ActionScript 3.0. La principal ventaja del contenedor Spring es que permite plasmar la creación de los objetos y sobre todo las relaciones entre los objetos desde un archivo de configuración XML (o varios). Se utiliza la palabra contenedor ya que Spring funciona como un escenario donde actúan todos los objetos de una aplicación. Tradicionalmente, la instanciación de objetos se ha realizado directamente desde el código. Con Spring ocurre lo que se llama una inversión de control ya que es el mismo contenedor el que se encarga de crear los objetos así como sus respectivas dependencias (herencia, interfaz, asociación, etc.). Uno se desconcierta un poco cuando empieza a trabajar con este tipo de contenedores. Esto sucede porque el control de la ejecución de la aplicación ya no es completo. Aparece un nuevo actor durante la ejecución cuyo trabajo es manejar el ciclo de vida de cada objeto. Esta inversión de control permite al desarrollador crear aplicaciones más flexibles (porque son más configurables) además de externalizar las dependencias entre componentes, y por lo tanto crear clases más fáciles de reutilizar.

Spring ActionScript está escrito en ActionScript 3.0, su migración ha sido realizada principalmente por Christophe Herreman, inicialmente bajo el nombre de Prana Framework. Actualmente, el proyecto ha sido aceptado como una extensión oficial del Spring Framework.

El propósito de este post es enseñarles cómo preparar su entorno de trabajo para poder disfrutar de Spring ActionScript desde Flash CS3. Primero, necesitamos descargar el contenedor. Lo pueden conseguir aquí. Coloquen los archivos fuentes (’org\springextensions\actionscript\*’) en la raíz del directorio donde van a trabajar. También se necesita bajar las fuentes de la biblioteca as3reflects desde as3commons. Asimismo, las fuentes se deben colocar en la raíz (’as3reflect\*’).

Con el Framework instalado, ya podemos empezar a crear nuestro objeto de prueba. El primer paso consiste en crear una clase sencilla que tendrá como única propiedad su nombre además de su respectivo setter & getter: 

package com.springframework
{
   public class MiBean
   {   
       // ------- Constructor -------
       public function MiBean() { }

       // ------- Propiedades -------
       protected var _nombre:String;
       public function set nombre(value:String):void { _nombre = value; }
       public function get nombre():String { return _nombre; }
   }
}

El archivo debe llamarse ‘MiBean.as’ y ubicarse en el directorio ‘com\springframework’.

En el segundo paso, vamos a crear nuestro archivo de configuración XML. Este archivo va a indicar al contenedor qué objeto se necesita instanciar y qué valor se asignará a la propiedad ‘nombre’:

<?xml version="1.0" encoding="utf-8"?>
<objects xmlns="http://www.pranaframework.org/objects"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.pranaframework.org/objects http://www.pranaframework.org/schema/objects/prana-objects-0.6.xsd">
<object id="miBean" class="com.springframework.MiBean">
<property name="nombre" value="jdecuyper" />
</object>
</objects>

En nuestro tercer y último paso, vamos a crear un archivo .fla en el cual se va a crear el contenedor Spring. Usando nuestro archivo de configuración, el contenedor va a instanciar la clase MiBean y pasarle el valor ‘jdecuyper’ a su propiedad ‘nombre’. En el primer frame de nuestro archivo, se coloca el siguiente código:

import com.springframework.MiBean;
import org.springextensions.actionscript.context.support.XMLApplicationContext;
registerClassAlias("com.springframework.MiBean", MiBean);

var xmlApplicationContext:XMLApplicationContext;
xmlApplicationContext = new XMLApplicationContext("http://localhost/springactionscript/applicationContext.xml");
xmlApplicationContext.addEventListener(Event.COMPLETE, applicationContextCompleteHandler);
xmlApplicationContext.load();

function applicationContextCompleteHandler(e:Event):void {
var miBean:MiBean;
miBean = xmlApplicationContext.getObject("miBean");
trace(miBean.nombre);
}

La clase XMLApplicationContext sirve para crear el contenedor, también se conoce como la ‘bean factory’. El método ‘getObject’ se encarga de regresarnos una referencia a nuestro objeto. Una vez que MiBean está instanciado, se manda a llamar su propiedad ‘nombre’, y si todo sale bien, se pintará ‘jdecuyper’ en su ventana de debug.

Les dejo con este ejemplo bastante sencillo pero que espero les pueda servir de inicio para desarrollos más complejos.

 

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in