Injeção baseada em XML na primavera
1. Introdução
Neste tutorial básico, aprenderemos como fazer uma configuração simples de bean baseado em XML com o Spring Framework.
2. Visão geral
Vamos começar adicionando a dependência de biblioteca do Spring empom.xml:
org.springframework
spring-context
5.1.4.RELEASE
A versão mais recente da dependência Spring pode ser encontradahere.
3. Injeção de dependência - uma visão geral
Dependency injection é uma técnica pela qual as dependências de um objeto são fornecidas por contêineres externos.
Digamos que temos uma classe de aplicativo que depende de um serviço que realmente lida com a lógica de negócios:
public class IndexApp {
private IService service;
// standard constructors/getters/setters
}
Agora, digamos queIService é uma interface:
public interface IService {
public String serve();
}
Essa interface pode ter várias implementações.
Vamos dar uma olhada rápida em uma implementação potencial:
public class IndexService implements IService {
@Override
public String serve() {
return "Hello World";
}
}
Aqui,IndexApp é um componente de alto nível que depende do componente de baixo nível chamadoIService.
Em essência, estamos desacoplandoIndexApp de uma implementação particular deIService, que pode variar com base em vários fatores.
4. Injeção de dependência - em ação
Vamos ver como podemos injetar uma dependência.
4.1. Usando Propriedades
Vamos ver como podemos conectar as dependências usando uma configuração baseada em XML:
Como pode ser visto, estamos criando uma instância deIndexServicee atribuindo a ela um id. Por padrão, o bean é um singleton. Além disso, estamos criando uma instância deIndexApp.
Dentro deste bean, estamos injetando o outro bean usando o método setter.
4.2. Usando Construtor
Em vez de injetar um bean por meio do método setter, podemos injetar a dependência usando o construtor:
4.3. Usando Static Factory
Também podemos injetar um feijão retornado por uma fábrica. Vamos criar uma fábrica simples que retorna uma instância deIService com base no número fornecido:
public class StaticServiceFactory {
public static IService getNumber(int number) {
// ...
}
}
Agora vamos ver como poderíamos usar a implementação acima para injetar um bean emIndexApp usando uma configuração baseada em XML:
No exemplo acima, estamos chamando o método estáticogetService usandofactory-method para criar um bean com idmessageService que injetamos emIndexApp.
4.4. Usando o Método de Fábrica
Vamos considerar uma fábrica de instâncias que retorna uma instância deIService com base no número fornecido. Desta vez, o método não é estático:
public class InstanceServiceFactory {
public IService getNumber(int number) {
// ...
}
}
Agora vamos ver como poderíamos usar a implementação acima para injetar um bean emIndexApp usando a configuração XML:
No exemplo acima, estamos chamando o métodogetService em uma instância deInstanceServiceFactory usandofactory-method para criar um bean com idmessageService que injetamos emIndexApp.
5. Teste
É assim que podemos acessar os beans configurados:
@Test
public void whenGetBeans_returnsBean() {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("...");
IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class);
assertNotNull(indexApp);
}
6. Conclusão
Neste tutorial rápido, ilustramos exemplos de como podemos injetar dependência usando a configuração baseada em XML usando o Spring Framework.
A implementação desses exemplos pode ser encontrada emthe GitHub project - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.