Introdução ao Framework Spring e Inversão de Controle (IoC)

Introdução ao Framework Spring e Conceitos de IoC

  1. Visão Geral do Framework Spring

O Spring é um framework de código aberto e leve, criado por Rod Johnson em 2003, que visa resolver problemas de baixo acoplamento entre camadas de lógica de negócios. Ele promove a programação orientada a interfaces em aplicações JavaSE e JavaEE, oferecendo uma arquitetura em camadas que permite flexibilidade na escolha de componentes. Os princípios centrais incluem Inversão de Controle (IoC) e Programação Orientada a Aspectos (AOP).

Vantagens do Spring

  • Desacoplamento e simplificação do desenvolvimento: o Spring gerencia a criação de objetos e dependências.
  • Suporte a AOP: facilita a implementação de funcionalidades transversais, como monitoramento.
  • Gerenciamento declarativo de transações: configuração sem código manual.
  • Integração com JUnit4: suporte a testes via anotações.
  • Compatibilidade com outros frameworks, como Hibernate e MyBatis.
  • Encapsulamento de APIs complexas do JavaEE, reduzindo a dificuldade de uso.
  1. Inversão de Controle (IoC) no Spring

IoC (Inversão de Controle) é um princípio de design que transfere a responsabilidade de criação e gerenciamento de objetos para o framework Spring, reduzindo o acoplamento entre componentes. Isso resolve problemas de dependências rígidas em aplicações.

Exemplo Básico de IoC

Para começar, adicione as seguintes dependências ao seu projeto:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Defina uma interface e sua implementação para simular um serviço:

package com.servico.exemplo;

public interface ServicoUsuario {
    void saudacao();
}
package com.servico.exemplo.implementacao;

import com.servico.exemplo.ServicoUsuario;

public class ImplementacaoServicoUsuario implements ServicoUsuario {
    @Override
    public void saudacao() {
        System.out.println("Olá, IoC!");
    }
}

Crie um arquivo de confiugração XML, como configuracao-spring.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="servicoUsuario" class="com.servico.exemplo.implementacao.ImplementacaoServicoUsuario"></bean>
</beans>

Escreva uma classe de teste para validar o IoC:

import com.servico.exemplo.ServicoUsuario;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TesteSpring {
    @Test
    public void testarIoC() {
        ApplicationContext contexto = new ClassPathXmlApplicationContext("configuracao-spring.xml");
        ServicoUsuario servico = (ServicoUsuario) contexto.getBean("servicoUsuario");
        servico.saudacao();
    }
}

O fluxo envolve importar dependências, definir componentes, configurar o Spring via XML e obter beans a partir do ApplicationContext. A interface ApplicationContext oferece implementações como ClassPathXmlApplicationContext para carregar configurações do classpath.

Tags: Spring Framework java IoC Injeção de Dependência Configuração XML

Publicado em 6-6 01:53 por Thomas