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