Neste post, vamos estudar um dos Frameworks que e lider no mercado em aplicacoes JEE.Estou falando do Spring Framework, que foi desenvolvido por Rod Johnson, e e mantido pela empresa Interface21. Este Framework oferece varios beneficios, possui modulos bem diversificados e pode ser usado em diversos cenarios.No nosso caso, vamos focar em um dos principais recursos do Spring que e o container de IoC (Inversion of Control), que tambem e conhecido como DI (Dependency Injection), a ideia da DI e de separar uma Interface da classe que a implementa, nos exemplos de DI deste tutorial sera aplicado a injecao atraves de metodos Setter, mais tambem pode ser injetado com Construtor.Atraves da Injecao de Dependencia, facilitara em ligar a camada de persistencia de dados com a camada de negocio e consequentemente com a camada de controller, deixando ambas as camadas desacopladas entre si.Alem da DI que o Spring ofere, iremos usar o JDBCTemplate para manipular os dados da camada de persistencia, este template possui varios metodos utilitarios para trabalhar com JDBC, e o mesmo ja fica encarregado de abrir/fechar conexao, statement e result, apenas vamos precisar de um Data Source para trabalhar com as querys.A camada de controller e apresentacao, sera feita com Servlet/JSP, mostrando assim, como o Spring e bem modular e que integra facilmente nossas camadas.Para o exemplo sera usado o Eclipse Indigo, TomCat 6, Banco de Dados Derby e o Spring 2.5.6, para baixar o framework, acesse: http://www.springsource.org/download, baixe a versao full, com todos as dependencias.Ao final do post, o projeto esta disponivel para download, com todas as libs necessarias.Segue o modelo da estrutura do projeto:1. Passo: Vamos criar nossa classe modelo, que se chamara Pessoa: package model; public class Pessoa { private int id; private String nome; public Pessoa() { super(); } public Pessoa(String nome) { super(); this.nome = nome; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } @Override public String toString() { return "Pessoa [id=" + id + ", nome=" + nome + "]"; } } Pessoa.java2. Passo: Agora vamos criar a Interface DAO. package dao; import java.util.List; import model.Pessoa; public interface PessoaDAO { void insert(Pessoa pessoa); List<Pessoa> select(); void delete(int id); } PessoaDAO.java3. Passo: Nesta classe, vamos implementar os metodos de contrato da Interface, alem disto, teremos um metodo que sera responsavel por criar a tabela PESSOA, no banco de dados Derby, (as configuracoes do banco, data source, etc..., sera explicada daqui alguns instantes.). Deve-se ressaltar, que o atributo jdbcTemplate do tipo JdbcTemplate, e responsavel por manipular os dados nessa camada de persistencia, observe-se que nao instanciamos o objeto com new, apenas teremos que ter o metodo setter deste atributo, para que o container do Spring, posso se encarregar de fazer a injecao de dependencia. package dao; import java.util.ArrayList; import java.util.List; import java.util.Map; import model.Pessoa; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; public class PessoaDAOImp implements PessoaDAO { private JdbcTemplate jdbcTemplate; @SuppressWarnings("unused") private void init() { StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE pessoa (");