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.:
Publicar un comentario