2010-06-29 35 views

Respuesta

9

Es una de las características "típicas" descritas en el Javabeans specification.

Aquí hay un extracto del capítulo 2.1 ¿Qué es un frijol?

Frijoles

individual Java variará de la funcionalidad que apoyan, pero los rasgos unificadores típicos que distinguen a un Java Bean son:

  • El apoyo a la “introspección”, por lo que una herramienta constructor puede analizar cómo un bean funciona
  • Soporte para "personalización" de modo que cuando se usa un generador de aplicaciones, un usuario puede personalizar el aspecto y el comportamiento de un bean.
  • Soporte para "eventos" como una metáfora de comunicación simple que se puede utilizar para conectar hasta frijoles.
  • Compatibilidad con "propiedades", tanto para personalización como para uso programático.
  • Compatibilidad con la persistencia, para que un bean se pueda personalizar en un generador de aplicaciones y y luego se guarde su estado personalizado y se vuelva a cargar más tarde.

Y aquí es un extracto del capítulo 5.5 Resumen de Persistencia:

Todos los granos deben ser compatibles con cualquiera de serialización o externalización.

En la práctica, no es explícitamente necesario para que funcione. En general, también funcionará bien sin implementar Serializable. Sin embargo, es útil siempre que quiera almacenarlos "sin formato" en el disco duro o enviar "sin formato" a través de la red. Por ejemplo, cuando se trata de un bean con ámbito de sesión que debe almacenarse en la sesión HTTP y el servidor se confunde para mantener y reanudar las sesiones HTTP durante el apagado/reinicio. De cualquier modo, cada vez que se enfrente a un NotSerializableException con el nombre de clase calificado del bean en el mensaje, entonces es señal suficiente para permitir que implemente Serializable.

+1

¿Qué pasa con los beans 'ApplicationScoped', ¿deberían implementar la interfaz Serializable? –

10

.

Por definición, un bean Java es exactamente eso, un serializable POJO (simple objeto Java antiguo), con un constructor sin argumentos y campos privados con getters/setters.

Cuestiones relacionadas