Spring – IoC Containers

author
3 minutes, 28 seconds Read

O contentor Spring IoC está no centro da estrutura da Spring. O contentor irá criar os objectos, ligá-los, configurá-los e gerir o seu ciclo de vida completo desde a criação até à destruição. O container Spring usa injeção de dependência (DI) para gerenciar os componentes que compõem uma aplicação.

Spring fornece dois tipos de containers.

  1. BeanFactory container
  2. ApplicationContext container

>

Leia mais: Inversão de Controle e Injeção de Dependência

BeanFactory

A BeanFactory é essencialmente nada mais que a interface para uma fábrica avançada capaz de manter um registro de diferentes feijões e suas dependências.

O BeanFactory permite-nos ler definições de feijão e aceder a elas utilizando a fábrica de feijão.

1.1. Como criar BeanFactory

Quando usamos apenas o BeanFactory podemos criar um e ler em algumas definições de feijão no formato XML da seguinte forma:

Outras formas de criar a fábrica de feijão são as seguintes:

Basicamente é tudo o que existe. Usando getBean(String), você pode recuperar instâncias dos seus feijões; a visão do lado do cliente do BeanFactory é surpreendentemente simples.

1.2. Métodos BeanFactory

A interface BeanFactory tem apenas seis métodos para o código do cliente chamar:

  1. boolean containsBean(String): retorna verdadeiro se o BeanFactory contém uma definição de feijão ou instância de feijão que corresponde ao nome dado
  2. Object getBean(String): retorna uma instância do feijão registado com o nome dado. Dependendo de como o feijão foi configurado pela configuração BeanFactory, ou um singleton e assim uma instância compartilhada ou um feijão recém-criado será retornado. Um BeansException será lançado quando o feijão não puder ser encontrado (neste caso será um NoSuchBeanDefinitionException), ou quando uma exceção ocorrer enquanto instanciar e preparar o feijão
  3. Object getBean(String, Class): retorna um feijão, registrado sob o nome dado. O feijão retornado será lançado para a Classe dada. Se o feijão não pôde ser lançado, as exceções correspondentes serão lançadas (BeanNotOfRequiredTypeException). Além disso, todas as regras do método getBean(String) se aplicam (ver acima)
  4. Class getType(String name): retorna o Class do feijão com o nome dado. Se nenhum feijão correspondente ao nome dado puder ser encontrado, um NoSuchBeanDefinitionException será lançado
  5. boolean isSingleton(String): determina se a definição do feijão ou instância de feijão registrada sob o nome dado é ou não um singleton. Se nenhum feijão correspondente ao nome dado puder ser encontrado, um NoSuchBeanDefinitionException será jogado
  6. String getAliases(String): Retorna os apelidos para o nome dado ao feijão, se algum foi definido na definição do feijão

ApplicationContext

ApplicationContext container adiciona mais funcionalidades específicas da empresa, como a capacidade de resolver mensagens textuais de um arquivo de propriedades e a capacidade de publicar eventos da aplicação para os ouvintes de eventos interessados. Este container é definido pelo org.springframework.context.ApplicationContext interface.

O container ApplicationContext inclui todas as funcionalidades do container BeanFactory, portanto é geralmente recomendado sobre o BeanFactory. BeanFactory ainda pode ser usado para aplicações leves como dispositivos móveis ou aplicações baseadas em applets onde o volume de dados e a velocidade são significativos.

2.1. Tipos de ApplicationContext

As implementações mais comumente usadas ApplicationContext são:

  1. FileSystemXmlApplicationContext – Este container carrega as definições dos beans de um arquivo XML. Aqui você precisa fornecer o caminho completo do arquivo de configuração do bean XML para o construtor.
  2. ClassPathXmlApplicationContext – Este container carrega as definições dos beans a partir de um arquivo XML. Aqui você não precisa fornecer o caminho completo do arquivo XML, mas você precisa definir CLASSPATH corretamente porque este container irá parecer um arquivo XML de configuração de beans no CLASSPATH.
  3. WebXmlApplicationContext – Este container carrega o arquivo XML com as definições de todos os beans de uma aplicação web.

2.2. Como criar ApplicationContext

Um exemplo de código para instanciar o contexto da aplicação será parecido com isto.

Similar Posts

Deixe uma resposta

O seu endereço de email não será publicado.