Top Posts

Entrevista em Inglês & Experiência

Continue lendo

Série Spring: Hello World no Spring

Posted by camilolopes | Posted in Series, Spring | Posted on 01-04-2013

0

 

olá Pessoal,

Estarei dando inicio a mais uma série aqui no blog e dessa vez é com o Spring framework. No post de hoje veremos como dar um Hello World usando o Spring, parece algo simples e fácil né? Mas, na verdade é. Porém, para quem nunca mexeu com Spring ainda pode achar que é complicado.

O Spring

Sem entrar na teoria pq o que não falta é fonte explicando o que é e pra que serve o framework. Eu digo sempre que o Spring é cara que nos ajuda a não fazer as coisas chatas e repetivas do dia-dia, que normalmente para o cliente não tem valor algum.

 Hello World

Vamos criar um java project, mas não esqueça de ir no site do Spring e baixar a versão mais recente. Estarei usando a versão 3.x.

Development

1. Crie um  java project

2. E os seguintes packages
springhelloworldpackage

3. Agora crie uma classe chamada SpringHelloWorld que terá um método o qual irá imprimir no console a mensagem

“Hello World Spring”.

package br.com.camilolopes.classes;

public class SpringHelloWorld {

                public void showHelloWorld(){

                               System.out.println(“Hello World Spring”);

                }}

4. No package conf  crie um arquivo XML , aqui chamei de springconfiguration.xml. E adicione o código a seguir ao arquivo:

<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  id=“hello” class=“br.com.camilolopes.classes.SpringHelloWorld”/>

</beans>

 

O cabeçalho temos  a configuração do Spring e a versão que estamos o usando. Mas, o essencial está na tag do bean. Ali estamos dizendo ao Spring para ele instanciar um objeto para a classe SpringHelloWorld, sendo assim  na aplicação podemos obter essa instância pelo id do bean e invocar qualquer método disponível da classe. Isso é o mesmo que fazemos

SpringHelloWorld variavelInstancia = new SpringHelloWorld();

Só que agora quem faz isso é o Spring e não nós mais. Veremos a seguir na prática o uso.

5. crie uma classe com o método main. Chamei a minha de Main.

package br.com.camilolopes.main;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext; 

import br.com.camilolopes.classes.SpringHelloWorld;

public class Main {

      public static void main(String[] args) {

//          essa classe é o container

ApplicationContext applicationContext = new ClassPathXmlApplicationContext(

                        “conf/springconfiguration.xml”);

            SpringHelloWorld bean = (SpringHelloWorld) applicationContext.getBean(“hello”);

            bean.showHelloWorld();      }}

 O ApplicationContext é o coração do Spring é através deles que vamos obter o que precisamos para trabalhar. Observe que informei para o ApplicationContext  onde está o arquivo de configuração do Spring que ele precisa se basear.Em seguida tem um .getBean e passei o id do bean que desejo, que é o id que declaramos no xml:

<bean  id=“hello” class=“br.com.camilolopes.classes.SpringHelloWorld”/>

 Ou seja, nesse momento o Spring já fez o new na classe por baixo dos panos, agora podemos fazer o que quiser com o objeto, nesse caso chamei  o único método existente e o resultado foi:

helloworldspringresult

 Simples assim!!. E isso é o básico do Spring.

GitHub

Acesse o repositório no github com todos os projetos da série Spring:  https://github.com/camilolopes/workspacespring

Vou ficando por aqui e espero que tenham gostado do post.

Abraços,

 

 

Criando projeto JSF com Maven no Eclipse

Posted by camilolopes | Posted in Java | Posted on 02-02-2013

2

Olá Pessoal,

No post de hoje vamos ver como criar um projeto JSF no Eclipse já suportando o Maven. Parece algo simples,  concorda? Mas pode dar uma dor de cabeça, e veremos o motivo.

Lets GO…

Starting…

Antes de mais nada instale o Jboss tools, conforme este post. Após a instalação, vamos ver o cenário que temos.

  • Maven 3.x
  • Eclipse Helios

Cenário 1

Você pode adicionar o maven ao seu projeto manualmente, ou seja, basta adicionar o pom.xml ao projeto e fazer as devidas configurações. Ideal é quando você já tem um projeto e no inicio não usava o maven, mas resolveu adotar agora, daí você não vai querer deletar o projeto e criar um novo “maven Project” certo. Mas sabemos que fazer configuração manualmente sempre é chato. Porém essa é uma forma de você adicionar o Maven ao seu projeto.

Cenário 2

Você está querendo começar um projeto do zero, tipo JSF Project. Mas, ao criar, vê que ele não está na estrutura do maven. E o que fazer? Podemos ir pelo cenário 1. Mas e se eu quiser já criar automático?  Há uma opção usando o File  New  Maven Project.



Quando escolhemos Maven Project há varias opções de criar um projeto, desde um simple maven Project, até um Project webapp.  Na imagem a seguir você pode ver as opções de maven Project disponíveis, porém muitos deles estão com bugs críticos que não cria o projeto ou dá umas exceções e trava tudo. Um exemplo é a appfuse para jsf + hibernate + Spring. Se tivesse funcionando seria muito show, mas infelizmente não está.  E o que fazer ir para o cenário 1?

É o que fiquei pensando. Apesar de podermos criar a nossa própria estrutura archetypes http://maven.apache.org/guides/mini/guide-creating-archetypes.html e ser fácil e rápido, mesmo assim ainda fiquei incomodado pelo fato de não conseguir gerar um projeto JSF, já com o Maven consegui com apenas alguns cliques.

Solução?

Sim, depois de muitas horas tentando entender o motivo e quebrando a cara com alguns plugins, achei um workaround. Vamos lá:

Crie um Maven Project (File è new è Project è maven project)

Na próxima tela deixe assim:

Clica em next e na tela seguinte vamos escolher maven-achetype-webapp

Clica em next

E agora vamos preencher. Estou presumindo que você já conhece o maven, então não irei explicar o que significa cada campo. Veja como ficou a minha:

Clique em finish.

Como você percebeu, o workaround foi criar um projeto do tipo webapp, mas ainda o projeto não tem suporte JSF, podemos fazer isso manualmente ou automaticamente. Clique com o botão direito no projeto e escolha configure >> add jsf capabilities:

Escolha o Servlet version 2.5

Clique em finish, no warning que aparecer clique em Yes

O projeto vai ficar “quebrado”, pois a versão do web.xml está diferente. Abra o web.xml e altere o version para 2.5

Agora precisamos adicionar as libs para JSF no pom.xml. Abra o pom.xml e clique na aba dependencies

E adicione:

com.sun.faces jsf-api

com.sun.faces jsf-impl

Não esqueça de adicionar também:

javax.servlet javax.servlet-api

javax.servlet jstl

Feito isso seu projeto deve tá assim:

Workaround para Windows 7

Quem tem Windows 7 pode se deparar com o problema de não conseguir executar “cmd” e para resolver o problema basta adicionar ao path do sistema o seguinte valor:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem

O Maven não está atualizando no eclipse

Passei por esse problema de alterar o pom.xml e o maven não fazer o download das libs e a modificação não refletir no eclipse, daí basta forçar o download:

mvn eclipse:eclipse -DdownloadSources=true

Vou ficando por aqui, espero que tenham gostado do post.

See ya!