Tópicos

Introdução To top of page

JavaBeans define um modelo de componente simples e eficaz para Java. O objetivo dos JavaBeans é fornecer unidades independentes e reutilizáveis que possam ser manipuladas através de programação pelos desenvolvedores ou visualmente em ferramentas do construtor.

Eles podem ser controles da GUI ou podem ser representação visual ausente. Os controles da GUI em Java são normalmente JavaBeans para serem manipulados pelas ferramentas do construtor. No J2EE, JavaBeans simples são comumente utilizados a partir das JSPs, nas quais possibilitam separação de apresentação em HTML e no código Java, que está contido nos JavaBeans.

Um JavaBean é uma classe Java com três recursos distintos:

Propriedades do JavaBean To top of page

As propriedades de um JavaBean podem ser acessadas por outros componentes. Normalmente, uma propriedade é um valor privado acessado por meio dos métodos setter e getter, mas também pode ser um valor calculado. As atualizações das propriedades podem ter vários efeitos secundários.

Acessores são métodos para acessar propriedades. Eles podem ser getters e setters e seguem as convenções de nomenclatura:

void setPropertyName(PropertyType value); // setter
PropertyType getPropertyName() // getter

Para uma propriedade booleana, um getter pode ser:

boolean isPropertyName() // getter for a boolean property

Exemplo: Bean do Cliente

A seguir, um exemplo de um JavaBean (Cliente) simples com duas propriedades simples: name e email. Observe como as propriedades são definidas por meio dos pares de métodos set/get.

Diagrama de UML mostrando as propriedades do Cliente.

public class Customer {
private String name;
private String email;

public String getName() {
return name;
}

public void setName(String aName) {
name = aName;
}

public String getEmail() {
return email;
}

public void setEmail(String aEmail) {
email = aEmail;
}

}

Esses JavaBeans simples são freqüentemente utilizados nas JSPs, nas quais ativam o transporte de valores de formulários nas páginas da Web.

Propriedades Indexadas To top of page

Além das propriedades simples, que apresentam um único valor, uma propriedade pode ser um conjunto de valores contidos em uma matriz.

As propriedades indexadas podem retornar um valor no índice especificado ou toda a matriz de valores.

As propriedades indexadas possuem as seguintes assinaturas:

void setPropertyName(int index, PropertyType value); // indexed setter
PropertyType getter(int index); // indexed getter
void setPropertyName(PropertyType values[]); // array setter
PropertyType[]getPropertyName(); // array getter

Propriedades do Limite To top of page

O mecanismo da propriedade do limite possibilita serviço de notificação quando a propriedade é alterada. Os objetos interessados que desejam ser notificados da alteração, registram-se antecipadamente e, quando a alteração da propriedade ocorrer, os objetos registrados receberão a notificação. Normalmente, essa notificação é feita por meio de um evento disparado pelo componente com a propriedade do limite após a definição da propriedade.

Um JavaBean com uma propriedade do limite expõem métodos para registro e cancelamento de registro de objetos interessados, chamados listeners. Os desenvolvedores podem definir seu próprio mecanismo de notificação, mas as bibliotecas Java fornecem várias classes de suporte comumente utilizadas no pacote java.beans.

Propriedades Limitadas To top of page

As propriedades limitadas são semelhantes às propriedades do limite, mas a notificação acontece antes da real definição da propriedade. Isso permite às partes interessadas rejeitar a alteração da propriedade lançando uma PropertyVetoException.

Eventos e Notificação To top of page

Eventos são o recurso dos JavaBeans que permite que os componentes desenvolvidos independentemente comuniquem-se entre si pela propagação de informações sobre a alteração de estado. Nesse modelo, alguns componentes disparam eventos, que são manipulados por outros componentes, na função dos listeners de eventos.

Para suportar esse modelo de comunicação, o modelo de componente JavaBeans fornece:

  • propriedades que podem disparar eventos (propriedades do limite e limitadas),
  • métodos de registro, para que os listeners possam registrar-se,
  • eventos, que transportam informações sobre a alteração e
  • listeners, que podem reagir no evento entregue.

O diagrama de classe a seguir ilustra esses conceitos para um JavaBean chamado EventSource com uma propriedade int simples.

Diagrama descrito no texto de acompanhamento.

Durante a configuração, os listeners concretos registram-se com o JavaBean. Em algum outro momento, algum outro objeto chama o método setProperty, que iniciará o processo de notificação, criando o objeto de evento. O JavaBean EventSource chamará o método propertyChange em todos os listeners registrados. Os listeners de eventos receberão o evento, lerão os valores e reagirão no evento.

O diagrama de seqüência a seguir ilustra a ordem de chamadas:

Diagrama descrito no texto de acompanhamento.

A notificação de listeners é síncrona em relação à instância de JavaBean, que é a origem do evento, mas o listener de evento pode realizar o processamento de eventos em outro encadeamento.

Introspecção To top of page

Introspecção é um mecanismo de tempo de execução que ativa a detecção de propriedades, eventos e métodos de um JavaBean. Ela é utilizada pelas ferramentas de desenvolvimento e por programas que não utilizam dependências codificadas permanentemente em outros componentes. Ela é alcançada por meio de reflexão e de um conjunto de convenções para nomenclatura de métodos e interfaces. Recursos adicionais de introspecção são suportados pela classe BeanInfo. As convenções de nomenclatura JavaBeans utilizadas para introspecção são, às vezes, chamadas de "padrões de design", mas não devem ser confundidas com a noção de padrão de design no design orientado a objetos.

Persistência To top of page

Um JavaBean pode ser persistido por meio de um mecanismo de serialização. A serialização pode ser automática ou personalizada, dependendo de o JavaBean implementar interfaces Serializáveis ou Externalizáveis. O JDK 1.4 introduz as classes XMLEncoder e XMLDecoder que possibilitam o armazenamento de instâncias de JavaBeans no formato XML.

Personalização To top of page

A aparência e comportamento de um JavaBean podem ser personalizadas no tempo de design. Isso é especialmente importante para JavaBeans visuais que são utilizados em interfaces gráficas com o usuário. A personalização é feita por meio de um editor de propriedade, utilizando personalizadores. Os personalizadores fornecem uma interface com o usuário personalizada para a configuração de uma instância de JavaBean no tempo de design.

BeanContext To top of page

BeanContext define uma hierarquia de restrição lógica que permite aos JavaBeans consultar seu ambiente sobre recursos e serviços. Seus mecanismos fornecem suporte para a hierarquia de restrição lógica de JavaBeans e para a consulta de serviços oferecidos pelos JavaBeans na hierarquia.

JavaBeans™ Activation Framework To top of page

O Java Activation Framework é uma extensão Java padrão que permite a determinação do tipo de uma parte de dados, seu encapsulamento, descoberta de suas operações disponíveis e a instanciação de um componente de software que corresponde à operação desejada na parte de dados.

Informações Adicionais To top of page

Para obter informações adicionais sobre os JavaBeans, consulte JavaBeans API Specification, Versão 1.01 em http://java.sun.com/. Siga os links para Docs & Training > Java 2 Platform, Standard Edition > Java 2 SDK, SE v1.3 documentation > JavaBeans > JavaBeans Specification.




Conteúdo desenvolvido ou parcialmente desenvolvido por Inferdata Corporation.

Rational Unified Process   2003.06.15