Posts Anteriores :
1- Crie um novo projeto Java >> Java Application
![]() |
Figura 01- Novo projeto Java |
![]() |
Figura 02 - Nome do projeto e classe principal |
![]() | |
|
![]() |
Figura 04 - novo arquivo XML |
![]() |
Figura 05 - arquivo beans-definitions.xml |
![]() |
Figura 06 - arquivo beans-definitions.xml |
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="emailSender1" class="springlesson02.EmailSender"> <property name="name" value="Mario Cezzare"></property> <property name="emailAddress" value="mcezzare@gmail.com"></property> </bean> <bean name="emailMessage1" class="springlesson02.EmailMessage"> <property name="contents" value="hello from lesson 02"></property> <property name="from" ref="emailSender1"></property> </bean> </beans>
Observe que a propriedade from do beam emailMessage1 em vez de value usa o atributo ref, que referencia o beam emailSender1
5 - Vamos criar uma 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 07 - Interface Message |
conteúdo do arquivo Message.java
package springlesson02; public interface Message { public String getMessage(); }
6 - Vamos criar uma interface Sender e adicionar uma função getDetails
public String getDetails();
Clique com o botão direito no projeto e escolha new>> java interface
![]() |
Figura 08 - Interface Sender |
conteúdo do arquivo Sender.java
package springlesson02; public interface Sender { public String getDetails(); }
7 - Vamos criar a classe EmailMessage que implementa a interface Message
![]() |
Figura 09 - Implementando a Interface Message |
![]() |
Figura 10 - Classe EmailMessage : Implementando a Interface Message |
I) Arquivo EmailMessage.java, crie duas variáveis do tipo String : contents e from
Veja as opções e clique em Refactor
Esse arquivo deve estar assim:
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, e vamos modificar o retorno da função getMessage()
IV) Agora vamos criar a classe EmailSender que implementa a interface Sender e vamos modificar o retorno da função getDetails()
Com a classe criada, crie duas variáveis do tipo String name e emailAddress. já conhece a dica, né?
Vamos encapsular as variáveis e gerar os Gets/Sets, clique com o botão direito no código fonte do arquivo e escolha a opção Refactor >> Encapsulate fields
Clique no botão Select All e em Refactor
package springlesson02; public class EmailMessage { public String contents; public Sender from; }II) Clique com botão direito neste arquivo EmailMessage.java e escolha a opção Refactor >> Encapsulate fields
![]() | |
|
Veja as opções e clique em Refactor
![]() |
Figura 12 - Refatorando |
Esse arquivo deve estar assim:
package springlesson02; public class EmailMessage { private String contents; private Sender from; /** * @return the contents */ public String getContents() { return contents; } /** * @param contents the contents to set */ public void setContents(String contents) { this.contents = contents; } /** * @return the from */ public Sender getFrom() { return from; } /** * @param from the from to set */ public void setFrom(Sender from) { this.from = from; } }III) 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 13 - 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, e vamos modificar o retorno da função getMessage()
conteúdo do arquivo EmailMessage.java
package springlesson02; public class EmailMessage implements Message { private String contents; private Sender from; /** * @return the contents */ public String getContents() { return contents; } /** * @param contents the contents to set */ public void setContents(String contents) { this.contents = contents; } /** * @return the from */ public Sender getFrom() { return from; } /** * @param from the from to set */ public void setFrom(Sender from) { this.from = from; } @Override public String getMessage() { return from.getDetails() + " wrote: " + this.contents; } }
IV) Agora vamos criar a classe EmailSender que implementa a interface Sender e vamos modificar o retorno da função getDetails()
![]() |
Figura 14 - Classe Email Sender |
![]() |
Figura 15 - Classe Email Sender |
Com a classe criada, crie duas variáveis do tipo String name e emailAddress. já conhece a dica, né?
Vamos encapsular as variáveis e gerar os Gets/Sets, clique com o botão direito no código fonte do arquivo e escolha a opção Refactor >> Encapsulate fields
![]() |
Figura 16 - Refatoração e Encapsulamento |
Clique no botão Select All e em Refactor
![]() |
Figura 17 - Refatorando |
conteúdo do arquivo EmailSender.java
package springlesson02; public class EmailSender implements Sender{ private String name; private String emailAddress; /** * @return the name */ public String getName() { return name; } /** * @param name the name to set */ public void setName(String name) { this.name = name; } /** * @return the emailAddress */ public String getEmailAddress() { return emailAddress; } /** * @param emailAddress the emailAddress to set */ public void setEmailAddress(String emailAddress) { this.emailAddress = emailAddress; } @Override public String getDetails() { return this.name + "<" + this.emailAddress+">"; } }
8 - Agora vamos colocar em nosso método main do programa, que está na classe springlesson02.SpringLesson02 a chamada p/ utilização do método getBean do nosso bean emailMessage1, através da instância de um objeto do tipo ClassPathXmlApplicationContext do Spring Framework que recebe como parâmetro um arquivo XML :
Já sabemos que ao usar os objetos e classes da linha 19, o NB fará a sugestão de importar as libs necessárias. 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.ApplicationContext e org.springframework.context.support.ClassPathXmlApplicationContext
Então o arquivo final fica assim:
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 :
O resultado deve ser :
Mario Cezzare<mcezzare@gmail.com> wrote: hello from lesson 02
E assim concluímos nossa lição 02.
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 EmailMessage p/ retornar o conteúdo das propriedades contents,from do nosso bean emailMessage1 através do método getMessage() da interface Message
Implementamos uma interface Sender através da classe EmailSender p/ retornar o conteúdo das propriedades name,emailAddress do nosso bean emailSender1 através do método getDetails() da interface Sender
Download do projeto NB
SpringLesson02
Dúvidas, Contribuições, Sugestões? Poste..
Grato,
Até a próxima.
![]() |
Figura 18 - Layout do projeto |
Já sabemos que ao usar os objetos e classes da linha 19, o NB fará a sugestão de importar as libs necessárias. 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.ApplicationContext e org.springframework.context.support.ClassPathXmlApplicationContext
Então o arquivo final fica assim:
package springlesson02; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class SpringLesson02 { /** * @param args the command line arguments */ public static void main(String[] args) { ApplicationContext ctx= new ClassPathXmlApplicationContext("beans-definitions.xml"); Message message1 = (Message)ctx.getBean("emailMessage1"); 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 19 - Resultado Final |
O resultado deve ser :
Mario Cezzare<mcezzare@gmail.com> wrote: hello from lesson 02
E assim concluímos nossa lição 02.
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 EmailMessage p/ retornar o conteúdo das propriedades contents,from do nosso bean emailMessage1 através do método getMessage() da interface Message
Implementamos uma interface Sender através da classe EmailSender p/ retornar o conteúdo das propriedades name,emailAddress do nosso bean emailSender1 através do método getDetails() da interface Sender
Observou que o beam emailSender1 foi chamado automágicamente pelo beam emailMessage1 por causa do atributo ref="emailSender1" ?
Download do projeto NB
SpringLesson02
Dúvidas, Contribuições, Sugestões? Poste..
Grato,
Até a próxima.
Nenhum comentário:
Postar um comentário