¿Qué es un JavaBean exactamente?

Que he entendido, creo, que un «Bean» es una clase Java con las propiedades y los métodos getter/setter. Tanto como yo lo entiendo, es el equivalente de un C struct. Es eso cierto?

También, hay una verdadera sintáctica diferencia entre una judía y una clase regular? ¿Hay alguna definición especial o una interfaz?

Básicamente, ¿por qué existe un término para esto?

También lo hace la Serializable interfaz de decir?

  • Consulte los lugares donde Beans de Java utiliza?. Es una clase siguiendo ciertas convenciones.
  • En aras de la exhaustividad, aquí hay un enlace a la Especificación de JavaBeans.
  • Sólo una nota. Si has oído alguna vez la gente tire de todo el término POJO, que a menudo significa realmente Bean. Cuando vea POJOs que casi siempre tienen incubadoras & captadores, son serializables, … En la actualidad de un POJO no requiere setters y getters, una interfaz serializable o nada; es simplemente una Plain Old Java Object con ningún requisito específico.
InformationsquelleAutor Amir Rachum | 2010-07-21

16 Kommentare

  1. 1889

    Un JavaBean es sólo un estándar

    1. Todas las propiedades privadas (uso getters/setters)
    2. Un público constructor sin argumentos
    3. Implementa Serializable.

    Que es. Es sólo una convención. Muchas de las bibliotecas dependen de ella, aunque.

    Con respecto a Serializable, de la La documentación de la API:

    Serialización de una clase está habilitado por la clase que implementa la
    java.io.Interfaz Serializable. Las clases que no implementan este
    la interfaz no tiene alguna de su estado de serializar o deserializar.
    Todos los subtipos de una clase serializable mismos son serializables. El
    la serialización de la interfaz no tiene métodos o campos y sólo sirve para
    identificar la semántica de ser serializable.

    En otras palabras, objetos serializables puede ser escrito a corrientes de agua, y por lo tanto, los archivos, objetos de bases de datos, de nada realmente.

    Además, no hay ninguna diferencia sintáctica entre un JavaBean y de otra clase, una clase es un JavaBean si sigue las normas.

    No es un término debido a que la norma permite a las bibliotecas mediante programación a hacer cosas con las instancias de una clase que defina en forma predeterminada. Por ejemplo, si la biblioteca quiere transmitir cualquier objeto que pase en ella, sabe que puede, porque su objeto es serializable (suponiendo que el lib requiere que los objetos adecuada JavaBeans).

    • A la derecha, en mi opinión casi toda la documentación que giran alrededor de los granos no pueden describir el término de la manera más concisa que tienen. +1
    • Se requiere que los miembros de un bean a ser también los frijoles? Parece razonable requisito..
    • No, no es necesario. Por ejemplo, un bean puede contener una Cadena; y la Cadena no es un bean. (String es inmutable, por lo que no se puede crear llamando a un constructor vacío y un setter.) Parece razonable que un objeto Serializable debe tener Serializable miembros, a menos que de alguna manera se serializa a ellos desde el exterior. Así que no, Java bean miembros no necesitan tener cualquier aspecto de Java beans. Aunque es más simple si ellos son los frijoles, también.
    • «Todas las propiedades privadas» no es correcto. Las propiedades se deducen de los getters y setters (si hay un método X getFoo() -> el bean tiene una propiedad de lectura llamado «foo»; si hay un método setFoo(X foo) -> el bean tiene una escritura de la propiedad denominada «foo»). Las propiedades pueden ser respaldados por un miembro de campos (pero no tiene que ser), que son generalmente privadas.
    • Espero que por ser un Java bean «una clase debe ser Público». Y es lo que realmente necesita que se debe implementar la Interfaz Serializable??
    • Suena como si usted no debe declarar las variables de estado final, porque tiene un no-args constructor. Esto es correcto?
    • sí, ese debe ser el caso.
    • Puedo ver cómo todas las ventajas de la programación orientada a objetos que los desarrolladores de Java son alardear de que se lleva tratando de resolver el unproductivity problemas, Anotaciones, Reflexiones, XML, Frijoles, VM. qué TERRIBLE IDIOMA
    • Muchas gracias! ¿Por qué tengo que buscar en todas partes para llegar a esto? Por qué no puede la gente ser tan hasta el punto de que ha estado con su respuesta?!! Tal enormemente de la onu-intuitivo plazo para un simple estándar.
    • Creo que es inapropiado debido al hecho de que en otros lenguajes de programación orientada a objetos, campos de miembro se denominan propiedades (JavaScript, PHP) o variables de instancia (en Python). Parece que la gente use estos términos indistintamente.
    • Todo eso es muy conciso, claro y agradable; sin embargo, hoy en día, una gran cantidad de personas (en los cursos, tutoriales, o incluso conversaciones) consulte el @Entity (javax.la persistencia.entidad) como a la clase de Javabean anotado con @Entity (para el mapeo ORM).. y.. @Entity clases no se implementan en java.io.Serializable.. que es lo que generalmente me confunde un poco, ya que soy muy exigente y perfeccionista tipo de persona. Es @Entity un Javabean o algo cerca de Javabean?

  2. 275

    Hay un plazo para que el sonido especial. La realidad es que en ninguna parte cerca tan misterioso.

    Básicamente, un «Bean»:

    • es un objeto serializable (es decir, se implementa java.io.Serializable, y lo hace correctamente), que
    • tiene «propiedades», cuyo getters y setters son sólo métodos con ciertos nombres (como, por ejemplo, getFoo() es el captador de la «Foo» de la propiedad), y
    • tiene un público de 0-arg constructor (por lo que puede ser creado y configurado por la configuración de sus propiedades).

    Actualización:

    Como para Serializable: Que no es sino un «marcador » interfaz» (una interfaz que no se declara ninguna de las funciones) que le dice a Java que la clase de implementación consiente (y se supone que es capaz de hacer) «serialización», un proceso que convierte una instancia en una secuencia de bytes. Los bytes pueden ser almacenados en archivos enviados a través de una conexión de red, etc, y tener la suficiente información para permitir una JVM (al menos, uno que sabe sobre el tipo de objeto) para reconstruir el objeto más tarde, posiblemente en una instancia diferente de la aplicación, o incluso en otra máquina!

    De curso, con el fin de hacer que la clase tiene que cumplir con ciertas limitaciones. La principal entre ellas es que todos los campos de instancia debe ser de tipos primitivos (int, bool, etc), las instancias de la clase que también es serializable, o marcado como transient para que Java no tratar de incluirlos. (Por supuesto, esto significa que transient campos no va a sobrevivir el viaje a través de una secuencia. Una clase que tiene transient campos deben estar preparados para reinicializar si es necesario.)

    Una clase que no puede cumplir con dichas limitaciones no deben implementar Serializable (y, si mal no recuerdo, el compilador de Java no vamos a hacerlo.)

    • Esta es probablemente una pregunta estúpida, pero, ¿ podría un campo de instancia además de ser un tipo primitivo o una instancia de una clase?
    • Va a ser un o el otro. Pero si es una instancia de una clase, no importa de que clase es serializable o no. Para que una clase sea serializable, su no-transient partes tienen que ser de algún tipo serializable.
    • probablemente olvidó mencionar que el constructor debe no tener argumentos . tiene un constructor público predeterminado (por lo que puede ser creado y configurado por la configuración de sus propiedades).
    • No olvidar; se acababa de ser redundante. Un constructor predeterminado, por definición, puede ser llamado sin argumentos.
    • Como me veo en ella, sin embargo, parece que «constructor predeterminado» significa algo un poco diferente en Java, en C++. 😛 Sustituido por «default» con «0-arg».
  3. 91

    JavaBeans son clases Java que se adhieren a una forma extremadamente simple convención de codificación.
    Todo lo que tienes que hacer es

    1. implementar java.io.Serializable interfaz – para guardar el estado de un
      objeto
    2. uso público vacía argumento de constructor para crear una instancia del objeto
    3. público getter/setter métodos para obtener y establecer los valores de las variables privadas (propiedades ).
  4. 59

    Propiedades de JavaBeans

    Un JavaBean es un objeto Java que satisface ciertos convenios de programación:

    1. El JavaBean clase debe implementar Serializable o
      Externalizable

    2. La clase de JavaBean debe disponer de un no-arg constructor

    3. Todos los JavaBean, las propiedades deben tener público setter y getter métodos

    4. Todos los JavaBean variables de instancia debe ser privado

    Ejemplo de JavaBeans

    @Entity
    public class Employee implements Serializable{
    
       @Id
       private int id;
       private String name;   
       private int salary;  
    
       public Employee() {}
    
       public Employee(String name, int salary) {
          this.name = name;
          this.salary = salary;
       }
       public int getId() {
          return id;
       }
       public void setId( int id ) {
          this.id = id;
       }
       public String getName() {
          return name;
       }
       public void setName( String name ) {
          this.name = name;
       }
       public int getSalary() {
          return salary;
       }
       public void setSalary( int salary ) {
          this.salary = salary;
       }
    }
    • Son las anotaciones necesarias o parte de un Java Bean?
    • No, las anotaciones no son necesarias. Las anotaciones se utilizó parte del Framework Spring, que utiliza Java Beans ampliamente.
    • ¿Por qué necesita tener una no-arg constructor?
    • esto es muy simple. pensar en la primavera que debe instanciar automáticamente tu bean con arg-constructor … lo que va a pasar como argumentos? 😉
  5. 22

    Explicación con un ejemplo.

    1. import java.io.Serializable

    Como para la Serialización, ver la documentación.

    2. campos privados

    De los campos debe ser privado para evitar exterior de clases para modificar fácilmente los campos.
    En lugar de directamente accediendo a los campos, usuagly getter/setter son los métodos utilizados.

    3. Constructor

    Un constructor público sin ningún tipo de argumento.

    4. getter/setter

    Los métodos Getter y setter para acceder y modificar los campos privados.

    /** 1. import java.io.Serializable */
    public class User implements java.io.Serializable {
        /** 2. private fields */
        private int id;
        private String name;
    
        /** 3. Constructor */
        public User() {
        }
        public User(int id, String name) {
            this.id = id;
            this.name = name;
        }
    
        /** 4. getter/setter */
        //getter
        public int getId() {
            return id;
        }
        public String getName() {
            return name;
        }
        //setter
        public void setId(int id) {
            this.id = id;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    • supongo que para setId(int id) cuerpo que usted quiere decir this.id = id; en lugar de this.id = is;
  6. 18

    Java Beans están utilizando para menos código y más enfoque de trabajo…
    Java Beans son utilizadas a lo largo de Java EE como un contrato universal para el tiempo de ejecución de descubrimiento y acceso. Por ejemplo, JavaServer Pages (JSP) utiliza Java Beans como objetos de transferencia de datos entre páginas o entre los servlets y JSPs. Java EE JavaBeans Activation Framework utiliza Java Beans para la integración del apoyo MIME tipos de datos en Java EE. El Java EE API de Gestión de los usos JavaBeans como la fundación para la instrumentación de los recursos a ser administrados en un entorno Java EE.

    Acerca De La Serialización:

    En la serialización de objetos un objeto puede ser representado como una secuencia de bytes que incluye los datos del objeto, así como la información sobre el tipo de objeto y los tipos de datos almacenados en el objeto.

    Después de que un objeto serializado ha sido escrito en un archivo, se puede leer el archivo y deserializa que es, el tipo de información y los bytes que representan el objeto y sus datos pueden ser utilizados para recrear el objeto en la memoria.

  7. 17

    Usted encontrará la Serialización útil a la hora de implementar su proyecto a través de múltiples servidores desde los frijoles se pueden almacenarse y transferirse a través de ellos.

    • Podría usted por favor proporcione más información acerca de la implementación del proyecto a través de múltiples servidores? gracias
    • dicen que un clúster con un par de servidores, para Websphere este enlace stackoverflow.com/questions/3193345/… podría ayudar.
  8. 9

    Según la Wikipedia:

    1. La clase debe tener un constructor público predeterminado (sin argumentos). Esto permite una fácil creación de instancias dentro de la edición y la activación de los marcos.

    2. Las propiedades de la clase debe ser accesible mediante get, set, es (puede ser utilizado para las propiedades booleanas en lugar de conseguir), y otros métodos (los llamados métodos de descriptor de acceso y mutador métodos) de acuerdo a una convención de nomenclatura estándar. Esto permite una fácil inspección automatizada y actualización de frijol estado, dentro de los marcos de referencia, muchas de las cuales incluyen editores personalizados para diferentes tipos de propiedades. Incubadoras puede tener uno o más de un argumento.

    3. La clase debe ser serializable. [Esto permite que las aplicaciones y los marcos de forma fiable guardar, almacenar y restaurar el frijol del estado de una manera independiente de la VM y de la plataforma.]

    Para más información, siga este enlace.

  9. 9

    Java Beans es un estándar, y su sintaxis básica requisitos han sido claramente explicadas por las otras respuestas.

    Sin embargo, en mi opinión, es más que un simple sintaxis estándar. El verdadero significado o la intención de uso de Beans de Java es, junto con los diversos herramienta soporta alrededor de la norma, para facilitar la reutilización de código y el software basado en componentes de ingeniería, es decir, permiten a los desarrolladores crear aplicaciones mediante el ensamblaje de componentes existentes (clases), y sin tener que escribir ningún código (o sólo tienen que escribir un poco de código de pegamento). Lamentablemente esta tecnología es subestimada y poco utilizado por la industria, lo que se puede decir de las respuestas en este hilo.

    Si usted lee Oracle tutorial sobre Java Beans, usted puede obtener una mejor comprensión en que.

    • Útil post y el enlace. Cuando pienso en los frijoles de hecho creo lo de «Generador Visual» tipo de cosas, como se ilustra en el Oracle artículo. Me pregunto si hay muchos otros frameworks que el uso de ellos en gran forma…
  10. 7

    Respecto a la segunda parte de su pregunta, la Serialización es un mecanismo de persistencia se utiliza para almacenar objetos como una secuencia de firmado bytes. Poner menos formalmente, se almacena el estado de un objeto de modo que pueda recuperarlo más tarde, por la des-serialización.

  11. 7

    Un Java Bean es una clase de java [conceptual] que deben seguir los siguientes convenios:

    1. Debe disponer de un no-arg constructor.
    2. Debe ser Serializable.
    3. Debe proporcionar los métodos establecer y obtener los valores de las propiedades, conocido como los métodos getter y setter.

    Es un componente de software reutilizable. Se pueden encapsular los muchos objetos en un objeto de modo que un mismo objeto se puede acceder desde múltiples lugares y es un paso hacia la facilidad de mantenimiento de código.

    • Me gusta la frase «componente de software reutilizable» cuando se habla de java beans – porque java beans, en general, no hacen absolutamente nada.
  12. 6

    Son serializables, tiene un cero argumento del constructor, y permitir el acceso a las propiedades de uso de los métodos getter y setter. El nombre de «Bean» fue dada para abarcar esta norma, que tiene como objetivo crear componentes reutilizables de software para Java.according to wiki

    Los objetos que forman la columna vertebral de su aplicación y que son gestionados por la Primavera contenedor de IoC son llamados frijoles. Un bean es un objeto que se crea una instancia, montado, y de lo contrario, administrado por un Resorte contenedor de IoC. De lo contrario, un bean es simplemente uno de los muchos objetos en la aplicación.
    according to la primavera io.

  13. 3

    Un Java Bean es esencialmente una clase, lo que clasifica a una clase como un bean es:

    1. Debe implementar la interfaz serializable (Una interfaz de Marcador).
    2. El constructor debe ser pública y no tener argumentos (Lo que otras personas llaman a un no-arg constructor).
    3. Debe tener getter y setter.

    Bueno tener en cuenta el serialVersionUID campo es importante para mantener el estado del objeto.
    A continuación el código califica como un bean:

    public class DataDog implements java.io.Serializable {
    
    private static final long serialVersionUID = -3774654564564563L;
    
    private int id;
    private String nameOfDog;
    
    //The constructor should NOT have arguments
    public DataDog () {}
    
    
    /** 4. getter/setter */
    
    //getter(s)
    public int getId() {
        return id;
    }
    public String getNameOfDog() {
        return nameOfDog;
    }
    //setter(s)
    public void setId(int id) {
        this.id = id;
    }
    public void setNameOfDog(String nameOfDog) {
        this.nameOfDog = nameOfDog;
    }}
  14. 3

    Sólo un poco de fondo/actualización en el bean concepto. Muchas otras respuestas tienen el qué, pero no tanto por qué de ellos.

    Que se inventaron los primeros en Java como parte de la construcción de interfaces gráficas de usuario. Siguieron los patrones que eran fáciles de herramientas que se separen dejando en la creación de un panel de propiedades, de modo que usted puede editar los atributos del Bean. En general, el Frijol propiedades representado un control en la pantalla (Creo que x,y,anchura,altura,texto,..)

    Usted puede pensar en esto como un establecimiento inflexible de tipos de estructura de datos.

    Con el tiempo se convirtió en útil para un montón de herramientas que utiliza el mismo tipo de acceso (Por ejemplo, Hibernate persisten las estructuras de datos para la base de datos)

    Como las herramientas evolucionado, se movieron más hacia anotaciones y lejos de separar el setter/getter nombres. Ahora la mayoría de los sistemas no requieren de frijoles, pueden tomar cualquier plain old java object con anotada propiedades para decirles cómo manipularlos.

    Ahora veo frijoles como anotado propiedad de bolas-en realidad son sólo útiles para las anotaciones que llevan.

    Frijoles en sí no son un patrón sano. Destruyen la encapsulación, por su naturaleza, ya que exponga todas sus propiedades a la manipulación externa y como se utilizan, hay una tendencia (no es un requisito) para crear código para manipular el frijol externamente en lugar de la creación de código dentro de la haba (viola «no pedimos un objeto por sus valores, pedir un objeto de hacer algo por ti»). Utilizando anotado pojos con un mínimo de captadores y no incubadoras es mucho más OO restauración de encapsulación y con la posibilidad de inmutabilidad.

    Por el camino, como todas las cosas estaban sucediendo a alguien extendido el concepto a algo que se llama Enterprise Java Beans. Estos son… diferentes. y son bastante complicadas que muchas personas sentían que no comprenda la totalidad de Frijol concepto y dejó de usar el término. Este es, creo yo, por que generalmente escuchar frijoles conoce como POJOs (ya que cada objeto java es un POJO esto es técnicamente bien, pero cuando usted oye a alguien decir POJO que son más a menudo el pensamiento acerca de algo que sigue el frijol patrón)

    • Derecho en viola «no pedimos un objeto por sus valores, pedir un objeto de hacer algo por ti»)
  15. 2

    A entender JavaBean que usted necesita para notar las siguientes:
    JavaBean es conceptual de la materia y no puede representar a una clase de cosas específicas

    JavaBean es una herramienta de desarrollo que se puede visualizar en la operación de los componentes de software reutilizables

    JavaBean se basa en el Sol de la especificación de JavaBeans y pueden ser componentes reutilizables. Su principal característica es la re-usabilidad.

  16. 1

    Un bean es una clase Java con los nombres de método que siga el Java Bean directrices (también llamados patrones de diseño) para propiedades, métodos, y eventos . Por lo tanto, cualquier método público de la clase de bean, que no es parte de la definición de una propiedad es un bean método. Mínimamente, una clase de Java, incluso con una propiedad como el único miembro (por supuesto, el acompañamiento de público getter y setter necesario), un método público como el único miembro o simplemente en un evento público oyente método de registro es un Java bean. Además, la propiedad puede ser propiedad de sólo lectura (tiene un método getter pero no setter) o de propiedad de sólo escritura (tiene un método setter sólo). El Java bean debe ser una clase pública para que sea visible para cualquier beanbox herramienta o contenedor. El contenedor debe ser capaz de crear instancias de ella; por lo tanto, debe tener un constructor público también. El Especificación de JavaBeans no requiere de un bean a tener un público cero-args constructor, explícita o por defecto, para un contenedor de crear instancias de ella. Si usted puede proporcionar un archivo (con extensión .ser) que contiene un serializado ejemplo, un beanbox herramienta podría utilizar ese archivo para crear una instancia de un prototipo de frijol. De lo contrario, el grano debe tener un público cero-args constructor, ya sea explícita o por defecto.

    Una vez que el grano se crea una instancia, el Java Bean ( API de java.los frijoles.*) puede hacer una introspección y llamar a métodos en ella. Si no hay ninguna clase que implementa la interfaz BeanInfo o la ampliación de una BeanInfo aplicación , SimpleBeanInfo clase, está disponible, la introspección implica el uso de la reflexión (implícita la introspección) para el estudio de los métodos admitidos por un objetivo bean y, a continuación, aplicar simples patrones de diseño(las directrices) para deducir, a partir de los métodos de las propiedades, eventos y métodos públicos son compatibles. Si una clase implementa la interfaz BeanInfo (un bean Foo, que debe ser nombrado FooBeanInfo) está disponible, la API omite implícita la introspección y utiliza métodos públicos (getPropertyDescriptor(), getMethodDescriptors(), getEventSetDescriptors() ) de esta clase para obtener la información. Si una clase se extiende SimpleBeanInfo está disponible, dependiendo de la SimpleBeanInfo métodos públicos (getPropertyDescriptor(), getMethodDescriptors(), getEventSetDescriptors() ) se reemplaza, se hará uso de los métodos sobrescritos(s) para obtener la información; por un método que no se reemplaza, que va por defecto a la correspondiente implícita la introspección. Un bean debe ser instanciado de todos modos, incluso si no hay implícita la introspección se realiza en ella. Por lo tanto, la exigencia de un público zeri-args constructor. Pero, por supuesto, la Serializable o Externalizable interfaz no es necesario para ser reconocido. Sin embargo, el Java Bean especificación dice: «también Nos gustaría que sea «trivial» para el caso común de un pequeño Bean que simplemente quiere tener su estado interno guardado y no quiere pensar en ello.’ Así, todos los granos deben implementar Serializable o Externalizable de la interfaz.
    En general, la especificación de JavaBeans no es difícil y rápida acerca de lo que constituye un bean. «La escritura de componentes JavaBeans es sorprendentemente fácil. Usted no necesita una herramienta especial y usted no tiene que implementar las interfaces. La escritura de los frijoles es simplemente una cuestión de seguir ciertas convenciones de codificación. Todo lo que tienes que hacer es hacer que su clase como un bean — el uso de herramientas de granos será capaz de reconocer y utilizar los bean.» Trivialmente, incluso la siguiente clase es un Bean Java,

    public class Trivial implements java.io.Serializable {}

    Decir, un bean constructor de algunos parámetros. Supongamos que algunos son tipos simples. El contenedor puede no saber qué valores a asignar a ellos; incluso si lo hace, la instancia resultante podría no ser reutilizables. Puede tener sentido sólo si el usuario puede configurar (especificar valores) por decir anotaciones o archivos de configuración xml como en la Primavera de frijoles. Y supongo que algunos parámetros son de clase o tipos de interfaz. De nuevo, el contenedor puede no saber qué valores a asignar a la misma. Puede tener sentido sólo si el usuario puede configurar (especificar objetos específicos) por decir anotaciones o archivos de configuración xml. Sin embargo, incluso en Primavera (a través de archivos de configuración xml), la asignación de objetos específicos (con cadena de nombres) a los argumentos de constructor ( atributo o elemento de argumentos de constructor)no es typesafe;es básicamente igual que la inyección de recursos. Hacer referencias a otras Primavera frijoles(llamados colaboradores, a través de los elementos del argumento de constructor elemento) es, básicamente, la inyección de dependencia y por lo tanto de typesafe. Obviamente, una dependencia(colaborador bean) podría tener un constructor con inyecta parámetros; aquellos inyectados de dependencia(s) puede tener un constructor con parámetros y así sucesivamente. En este escenario, en última instancia, usted necesitaría un poco de clases de bean (e.g, MyBean.class) que el contenedor se puede ejemplificar con una simple llamada nueva MyBean() antes de que se puede construir otro colaborador de granos a través de la inyección de dependencia en los constructores, por lo tanto, el requisito para los granos del público cero-args constructor. Supongamos que, si el recipiente no soporta la inyección de dependencia y/o no permiten la asignación simple de los valores de tipo de constructor a través de algunas anotaciones o xml de los archivos de configuración como en la Primavera, frijol constructores no tienen parámetros. Incluso una Primavera frijoles aplicación necesitaría un poco de frijoles para hacer público cero argumentos del constructor (por ejemplo, en un escenario en que el Resorte de la aplicación no tiene bean con sólo los tipos simples como constructor de argumentos).

    JSF managed beans se ejecutan en un contenedor web. Pueden configurarse con @ManagedBean anotación o con una aplicación de configuración de archivo de recursos managed-bean.xml. Sin embargo, es compatible con la inyección a través de la inyección de recursos (no de typesafe) solamente; no apto para la inyección en los constructores. El Especificación de JSF requiere que managed beans debe tener un público cero argumento de constructores . Además, se dice, «a partir de la versión 2.3 de esta especificación, el uso del managed bean instalación como se especifica en esta sección está fuertemente
    desalentado. Una mejor y mayor cohesión solución integrada para resolver el mismo problema es el uso de Contextos e Inyección de Dependencia (CDI), como se especifica en el estándar JSR-365.» En otras palabras, la CDI managed beans para ser utilizada, la cual ofrece typesafe la inyección de dependencia en los constructores similar a la de la Primavera de frijoles. El CDI especificación adopta el Managed Beans de especificación, que se aplica a todos los contenedores de la plataforma JEE, no sólo a nivel web. Por lo tanto, el contenedor web necesita aplicar CDI especificación.

    Aquí es un extracto de la Bean gestionado especificación
    «Managed Beans son administradas por contenedor de objetos con un mínimo de requisitos,
    de lo contrario, conocido bajo el acrónimo «POJOs» (Plain Old Java Objects)…que puede ser visto como una plataforma Java EE-versión mejorada de la componente JavaBeans modelo que figura en el de la plataforma Java SE…. No se puede perder por el lector que Managed Beans tienen un precursor en la homónima de la instalación se encuentran en el JavaServer Faces (JSF) de la tecnología…Managed Beans definidos en la presente especificación representan una generalización de las que se encuentran en JSF; en particular, Managed Beans puede ser utilizado en cualquier lugar en una aplicación Java EE, no sólo en los módulos web. Por ejemplo, en el componente básico del modelo, Managed Beans debe proporcionar un constructor sin argumentos, pero una especificación que se construye sobre la gestión de Granos, tales como el CDI (JSR-299), puede relajarse ese requisito y permitir Managed Beans para proporcionar constructores con más compleja de firmas, siempre y cuando se sigan algunas reglas bien definidas…Un Managed Bean no debe ser: una final de la clase, una clase abstracta, una no-clase interna estática. Un Bean Gestionado puede no ser serializable a diferencia de los regulares de la componente JavaBean.»
    Por lo tanto, la especificación de Managed Beans, también conocido como POJOs o POJO frijoles, permite la extensión como en la CDI.

    El CDI de la especificación re-define los managed beans como:
    Cuando se ejecuta en Java EE, UN nivel superior de Java de la clase es un bean gestionado si cumple con los requisitos de:

    • No es una clase interna.
    • Es una clase no abstracta, o es anotado @Decorador.
    • No aplicar javax.empresa.inyectar.spi.La extensión.
    • No es anotado @Vetado o en un paquete anotado @Vetada.
    • Tiene un constructor apropiado, ya sea: la clase tiene un constructor sin parámetros, o la clase declara un constructor anotado @Inject.

    Todas las clases de Java que cumplen estas condiciones son administrados frijoles y por lo tanto ninguna declaración especial
    se requiere definir un bean gestionado. O

    si se define a ser un bean gestionado por cualquier
    otra especificación Java EE y si

    • No se acompañan de un componente EJB-definición de anotación o declarada como una clase de bean EJB
    en ejb-jar.xml.

    A diferencia de la Primavera frijoles no es compatible con los constructores con el sencillo tipos, lo que podría ser posible si se admite la configuración con el xml de los archivos de configuración como en Primavera o en cualquier anotaciones.

    Ejb se ejecutan en un contenedor EJB. Su especificación dice: «Un bean de sesión componente es un Bean Gestionado.» «La clase debe tener un constructor público que no toma argumentos,» se dice, por tanto bean de sesión y message-driven bean. Además, dice, «El bean de sesión de clase no es necesario para implementar el SessionBean o la interfaz de la interfaz Serializable.» Por la misma razón como JSF frijoles, que EJB3 la inyección de dependencia es básicamente inyección de recursos, JSF frijoles no apoyo a los constructores con argumentos, que es, a través de la inyección de dependencia. Sin embargo, si el contenedor de EJB implementa la CDI, «Opcionalmente: La clase puede tener un constructor anotado con el Inyectar de anotación,» se dice, por tanto bean de sesión y message-driven bean, ya que, «Un EJB se empaqueta en un archivo de bean de CDI y no con la anotación javax.empresa.inyectar.Vetó la anotación, se considera un CDI habilitado bean.»

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea