terça-feira, 18 de setembro de 2012

JAVA + Spring + Netbeans 7.2 - Lesson 01

Vou dar inicio a uma série de posts sobre a implementação do Framework spring em Java.
Certifique-se de ter preparado seu ambiente conforme descrito nesse post : Java-spring-netbeans-72 .
Neste Post mostrarei como implementar um Bean que conterá uma chamada p/ uma interface de nome Message

1- Crie um novo projeto Java >> Java Application
Figura 01- Novo projeto Java
2 - Dê o nome de SpringLesson01 e assinale a opção  Create Main Class springlesson01.SpringLesson01
Figura 02 - Nome do projeto e classe principal


3- Adicione a Lib Spring criada no Post  Java-spring-netbeans-72 :
Figura 03 - Propriedades do projeto

Figura 04 - Clique em add Library e Adicione a lib Spring

Figura 05 -Após selecionar a Lib , clique em OK
4 - Vamos criar um arquivo XML de nome beans-definitions.xml na pasta src de nosso projeto
Figura 06 -Novo Arquivo XML
Figura 07 -Nome doArquivo beans-definitions.xml  , em folder  clique em browse e escolha a pasta src

Figura 08 - Tipo de Documento, escolha well-formed document
5 - Editando o arquivo XML :
Figura 09 - Editando o documento XML, veja que o NB colou o arquivo em um package default

conteúdo do arquivo beans-definitions.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-3.0.xsd">
<bean name="message1" class="springlesson01.HelloWorldMessage">
    <property name="name" value="Mario Cezzare"></property>
</bean>
</beans>
Observe que o nome do nosso bean é : message1
Observe que ao colocar esse endereço o NB fará o download dos arquivos de definição
Figura 10 - NB baixando os schemas
6 - Vamos criar a nossa interface Message e adicionar uma função getMessage
public String getMessage();
Clique com o botão direito no projeto e escolha new>> java interface

Figura 11 - Nova Interface Java


Figura 12 - Nova Interface Java Message

Figura 13 - adicione a função getMessage

conteúdo do arquivo Message.java
package springlesson01;


public interface Message {
    
       public String getMessage();
       
}

7 - Vamos criar a Classe HelloWorldMessage que implementará a interface Message
I) Clique com o botão direito no package springlesson01  e escolha new>> java class
Figura 14 - Nova classe java
Figura 15 - Classe HelloWorldMessage 
II) Crie uma variável pública do tipo String nome
package springlesson01;


public class HelloWorldMessage {
    public String name;
    
}
III) Vamos aproveitar os recursos do NB e utilize o atalho PC(ctrl + i), MAC (command +i) ou através do menu Source >> Insert code p/ gerar os Gets/Sets :

Figura 16 - Insert Code

Clique na Classe HelloWorldMessage p/ selecionar o(s) atributo(s) name, e marque a opção Encapsulate fields, e Generate
Figura 17 - opções p/ gerar Get/Set

IV) Observe que o encapsulamento da variável a tornou privada
Figura 18 - Código da classe HelloWorldMessage


package springlesson01;

public class HelloWorldMessage {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
}

e precisamos que essa classe implemente a interface Message. Para isso adicione o texto implements Message após o nome da Classe. Veja que o NB reclamou.
Figura 19  - implementando a interface  Message

Isso acontece porque ao implementar uma interface, se nossa classe não for abstrata, precisamos implementar  todos os métodos abstratos. Clique na lampada no nº da linha e escolha a opção implement all abstract methods.
Figura 20 - implementado os métodos abstratos

E faremos com que o método getMessage retorne uma String "Hello" + o nome . Esta classe agora deve estar assim:

package springlesson01;

public class HelloWorldMessage implements Message{
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String getMessage() {
        return "Hello " + name;
    }
}

V) Antes de mostrar o uso do bean e do Spring  vamos corrigir um lapso, dei o nome de arquivo XML de bean-definitions.xml.xml

Clique com o botão direito no arquivo XML e escolha a opção Rename e altere p/
bean-definitions que o NB poe a extensão .xml no arquivo
Figura 21  - Correção do arquivo xml



Figura 22  - Correção do arquivo xml p/ beans-definitions

VI) Agora vamos colocar em nosso método main do programa, que está na classe springlesson01.SpringLesson01 a chamada p/ utilização do método  getBean do nosso bean message1, através da instância de um objeto do tipo ClassPathXmlApplicationContext do Spring Framework que recebe como parâmetro um arquivo XML :

Figura 23 -Editando o método main do programa

Clique duas vezes no arquivo SpringLesson01.java do package springlesson01 :
Adicione o seguinte código dentro do método main

ApplicationContext ctx= new ClassPathXmlApplicationContext("beans-defitions.xml");
Message message1 = (Message)ctx.getBean("message1");
System.out.println(message1.getMessage());

Neste momento, o arquivo completo deve estar assim :
package springlesson01;

public class SpringLesson01 {

    public static void main(String[] args) {

        
        ApplicationContext ctx= new ClassPathXmlApplicationContext("beans-definitions.xml");
        Message message1 = (Message)ctx.getBean("message1");
        System.out.println(message1.getMessage());
        
        
    }
}
Porém o NB deve ter sublinhado a linha 9 apresentando um erro, isso acontece porque precisamos importar as classes do Spring que contém esses métodos e objetos.
Figura 24 - Editando o método  main


Clique na lâmpada que aparece no nº da linha e escolha a sugestão de importar as 2 libs do spring org.springframework.context.ApplicationContextorg.springframework.context.support.ClassPathXmlApplicationContext
Figura 25 - Adicionando as classes do Spring

e o arquivo deve ter ficado assim

package springlesson01;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringLesson01 {

    public static void main(String[] args) {

        
        ApplicationContext ctx= new ClassPathXmlApplicationContext("beans-definitions.xml");
        Message message1 = (Message)ctx.getBean("message1");
        System.out.println(message1.getMessage());
        
        
    }
}

e pronto.Vamos rodar no projeto e ver se funcionou. Clique no botão RUN (ícone de play) , ou no menu Run >> Run Project , e veja o resultado na aba output :
Figura 26 - Resultado Final

O resultado deve ser :
Hello Mario Cezzare


E assim concluímos nossa lição 01.


Resumo : o que foi feito ?
Utilizamos a classe ApplicationContext p/ gerenciar o contexto de nossa App. Informamos a ela que as definições dos serviços estão em um arquivo XML, através do objeto ClassPathXmlApplicationContext.
Implementamos uma interface Message através da classe HelloWorldMessage p/ retornar o conteúdo da propriedade name do nosso bean message1 através  do método getMessage() da interface

Download do projeto NB
SpringLesson01


Dúvidas, Contribuições, Sugestões? Poste..
Grato,
Até a próxima.


Nenhum comentário: