10 octubre, 2007

JAFramework

.
BeanFactory

Podemos utilizar JAF para instanciar objetos definidos en el descriptor.

descriptor.xml
   1:
   2:<jaframework xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="jaframework.xsd">
   3:
   4:   <bean-factory>
   5:      <bean name="FRAME" class="java.awt.Frame" singleton="false"/>
   6:      <bean name="VECTOR" class="java.util.Vector" singleton="true"/>
   7:   </bean-factory>
   8:  
   9:</jaframework>
  10:

En la línea 5 definimos un objeto llamado FRAME de la clase java.awt.Frame. En la línea 6 definimos un objeto llamado VECTOR de la clase java.util.Vector. Los nombres FRAME y VECTOR son arbitrareos.

a FRAME lo definimos con el atributo singleton="false" en cambio a VECTOR lo definimos con singleton="true". Esto significa que cada vez que le pidamos al framework un objeto FRAME obtendremos una nueva instancia de java.awt.Frame (singleton="false"). Y cada vez que le pidamos al framework un objeto VECTOR el framework nos dará la misma (y única) instancia (singleton="true").

El tag <bean-factory> debe ir al final, justo antes del cierre </framework>


El siguiente programa muestra como pedirle objetos al framework y prueba el funcionamiento del atributo singleton.

PruebaBeans.java
   1:
   2:package demo;
   3:
   4:import framework.JABeanFactory;
   5:import framework.JAFactory;
   6:
   7:public class PruebaBeans
   8:{
   9:   public static void main(String[] args)
  10:   {
  11:      JABeanFactory factory = JAFactory
  12:                                    .getBeanFactory();
  13:
  14:      // levanto el descriptor
  15:      factory.load("descriptor.xml");
  16:   
  17:      // pido dos objetos FRAME (singleton=false)
  18:      Object f1 = factory.getBean("FRAME");
  19:      Object f2 = factory.getBean("FRAME");
  20:
  21:      // verifico si son la misma instancia
  22:      System.out.print("Son la misma instancia ? ");
  23:      System.out.println(f1 == f2); // debe dar false
  24:
  25:      // pido dos objetos VECTOR (singleton=true)
  26:      Object v1 = factory.getBean("VECTOR");
  27:      Object v2 = factory.getBean("VECTOR");
  28:
  29:      // verifico si son la misma instancia
  30:      System.out.print("Son la misma instancia ? ");
  31:      System.out.println(v1 == v2); // debe dar true
  32:   }
  33:}
  34:




No hay comentarios.: