Guia do Spring BeanFactory

Guia do Spring BeanFactory

1. Introdução

Este artigo se concentrará emexploring the Spring BeanFactory API.

A interfaceBeanFactory fornece um mecanismo de configuração simples, mas flexível, para gerenciar objetos de qualquer natureza por meio do contêiner Spring IoC. Vamos dar uma olhada em alguns princípios básicos antes de mergulhar profundamente nesta API Spring central.

2. Noções básicas - Feijões e recipientes

Simplificando, beans são os objetos Java que formam a espinha dorsal de um aplicativo Spring e são gerenciados pelo contêiner Spring IoC. Além de ser gerenciado pelo contêiner, não há nada de especial em um bean (em todos os outros aspectos, é um dos muitos objetos no aplicativo).

O contêiner Spring é responsável por instanciar, configurar e montar os beans. O contêiner obtém suas informações sobre quais objetos instanciar, configurar e gerenciar lendo os metadados de configuração que definimos para o aplicativo.

3. Dependências do Maven

Vamos adicionar o Mavendependency necessário ao arquivopom.xml. Usaremos a dependência do Spring Beans para configurar o BeanFactory:


    org.springframework
    spring-beans
    5.1.4.RELEASE

4. A interfaceBeanFactory

É interessante começar dando uma olhada no pacoteinterface definition no pacoteorg.springframework.beans.factory e discutir algumas de suas APIs importantes aqui.

4.1. As APIsgetBean()

Várias versões do métodogetBean() retornam uma instância do bean especificado, que pode ser compartilhado ou independente no aplicativo.

4.2. A APIcontainsBean()

Este método confirma se esta fábrica de beans contém um bean com o nome fornecido. Mais especificamente, ele confirma segetBean(java.lang.String) é capaz de obter uma instância de bean com o nome fornecido.

4.3. A APIisSingleton()

A APIisSingleton pode ser usada para consultar se este bean é um singleton compartilhado. Isso segetBean(java.lang.String) sempre retornará a mesma instância.

4.4. A APIisPrototype()

Esta API irá confirmar segetBean(java.lang.String) retorna instâncias independentes - significando um bean configurado com o escopo do protótipo, ou não.

O importante a notar é que este método que retornafalse não indica claramente um objeto singleton. Indica instâncias não independentes, que também podem corresponder a outros escopos.

Precisamos usar a operaçãoisSingleton(java.lang.String) para verificar explicitamente uma instância singleton compartilhada.

4.5. Outras APIs

Enquanto o métodoisTypeMatch(String name, Class targetType) verifica se o bean com o nome fornecido corresponde ao tipo especificado,getType(String name) é útil para identificar o tipo do bean com o nome fornecido.

Finalmente,getAliases(String name) retorna os apelidos para o nome de bean fornecido, se houver.

5. APIBeanFactory

BeanFactory contém definições de bean e instancia-as sempre que solicitado pelo aplicativo cliente - o que significa:

  • Ele cuida do ciclo de vida de um bean, instanciando-o e chamando métodos de destruição apropriados

  • É capaz de criar associações entre objetos dependentes enquanto os instancia

  • É importante apontar queBeanFactory não suporta a injeção de dependência baseada em anotação, enquantoApplicationContext, um superconjunto de BeanFactory suporta

LeiaApplication Context para descobrir o que ele pode fazer a mais.

6. Definindo o Bean

Vamos definir um bean simples:

public class Employee {
    private String name;
    private int age;

    // standard constructors, getters and setters
}

7. ConfigurandoBeanFactory com XML

Podemos configurarBeanFactory com XML. Vamos criar um arquivobean factory-example.xml:




  
    
    
  
  

Observe que criamos um alias para o beanemployee.

8. BeanFactory comClassPathResource

ClassPathResource pertence ao pacoteorg.springframework.core.io. Vamos executar um teste rápido e inicializarXmlBeanFactory usandoClassPathResource conforme mostrado abaixo:

public class BeanFactoryWithClassPathResourceTest {

    @Test
    public void createBeanFactoryAndCheckEmployeeBean() {
        Resource res = new ClassPathResource("beanfactory-example.xml");
        BeanFactory factory = new XmlBeanFactory(res);
        Employee emp = (Employee) factory.getBean("employee");

        assertTrue(factory.isSingleton("employee"));
        assertTrue(factory.getBean("employee") instanceof Employee);
        assertTrue(factory.isTypeMatch("employee", Employee.class));
        assertTrue(factory.getAliases("employee").length > 0);
    }
}

9. Conclusão

Neste artigo rápido, aprendemos sobre os principais métodos que a API SpringBeanFactory oferece e um exemplo para ilustrar a configuração e seu uso.

O código que sustenta esses exemplos está disponívelover on GitHub.