Você está na página 1de 10

17/2/2014

Introduo ao Spring Framework

Introduo ao Spring Framework


Veja nesse artigo uma introduo ao Spring Framework, um dos mais utilizados em projetos na linguagem Java. Conhea um pouco sobre o framework e implemente um exemplo de Hello World.

Gostei (4)

(0)

Muitos j ouviram falar nesse framework(Spring), mas a complexidade inicial afasta ou assusta bastante os iniciantes do mundo Java. Sim, a principio e principalmente para um iniciante o Spring pode parecer nada simples, mas para desenvolvedores mais experientes, logo pode-se perceber o encanto e a mgica do Spring Framework. Nesse artigo vamos desvendar um pouco desse completssimo framework. Spring um framework de cdigo aberto (open source), criado por Rod Johnson, em meados de 2002, e apresentado no seu livro Expert One-on-One: JEE Design and Development. Foi criado com o intuito simplificar a programao em Java, possibilitando construir aplicaes que antes s era possvel utilizando EJBs. O Spring atualmente possui diversos mdulos como Spring Data (trata da persistncia), Spring Security (trata da segurana da aplicao) entre outros mdulos. Mas o principal (core) pode ser utilizado em qualquer aplicao Java, as principais funcionalidades so a injeo de dependncia (CDI) e a programao orientada a aspectos (AOP), cabe ao
http://www.devmedia.com.br/introducao-ao-spring-framework/26212 1/10

17/2/2014

Introduo ao Spring Framework

desenvolvedor dizer ao Spring o que quer usar. O que faz dele uma poderosa ferramenta, pois no existe a necessidade de se arrastar todas as ferramentas do framework para criar uma aplicao simples.

Configurando o Spring
Para esse artigo vamos utilizar o Eclipse e o Tomcat 7, certifique-se de t-los instalados antes de continuar. Primeiramente criaremos um Dynamic Web Project com o nome de hello-spring, como mostra a figura 1.

http://www.devmedia.com.br/introducao-ao-spring-framework/26212

2/10

17/2/2014

Introduo ao Spring Framework

Figura 1: Criando o projeto Agora vem a parte mais complicada, configura o Spring, a princpio algo bastante complexo para aqueles que ainda no possuem muita pratica, lembrando que todo framework um bicho de sete cabeas a primeira vista. Para o Spring funcionar, vamos precisar de suas libs, acessando os links abaixo, vamos encontrar tudo o que precisamos. http://www.springsource.org/spring-framework http://commons.apache.org/logging/download_logging.cgi No canto direito da tela teremos as ltimas verses lanadas, usaremos a mais atual. Aps baixar o zip do framework, vamos descomprimi-lo, e acessar a pasta libs do framework, no se assuste, no usaremos todos esses jars , vamos copiar spring-webmvc-X-X.jar , spring-web- X-X.jar, spring-expression-X-X.jar, spring-core- X-X.jar, spring-contextX-X.jar, spring-beans- X-X.jar e colar na pasta WEB-INF/lib. Tambm necessria a biblioteca commons-logging-1.1.1.jar para nosso projeto, ver figura 2. Observao: X-X trata-se da verso do framework que foi baixada.

http://www.devmedia.com.br/introducao-ao-spring-framework/26212

3/10

17/2/2014

Introduo ao Spring Framework

Figura 2: Monstrando JARs do prejeto Com posse da biblioteca do framework, agora vamos criar uma pasta chamada spring dentro do diretrio WEB-INF, e dentro da pasta criaremos um arquivo xml chamado application-context.xml, lembrando que o Spring um framework container-based, ou seja, ele vai conter e carregar o que voc inform-lo. A raiz do nosso xml tag <beans> </beans> e dentro conter toda a configurao do Spring Observao: no obrigatria a configurao do Spring em apenas um .xml, possvel separar vrios arquivos de configurao, exemplo: persistence-context.xml mvccontext.xml etc... , porm nesse artigo isso no ser abordado. Listagem 1: Como deve ficar nosso application-context.xml

< ? x m lv e r s i o n = " 1 . 0 "e n c o d i n g = " U T F 8 " ? > < b e a n sx m l n s = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n s "


http://www.devmedia.com.br/introducao-ao-spring-framework/26212 4/10

17/2/2014

Introduo ao Spring Framework

x m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a i n s t a n c e " x m l n s : c o n t e x t = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x t " x m l n s : m v c = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / m v c "

x s i : s c h e m a L o c a t i o n = " h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / m v ch t t p : / / w w w . s p r i n g

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / b e a n sh t t p : / / w w w . s p r i n g f r a m e w o r k .

h t t p : / / w w w . s p r i n g f r a m e w o r k . o r g / s c h e m a / c o n t e x th t t p : / / w w w . s p r i n g f r a m e w o r

< ! -I n f o r m aop a c o t eo n d eoS p r i n gi r ab u s c a ra sc l a s s e sa n o t a d a s( @ C o n t r o l l e r < c o n t e x t : c o m p o n e n t s c a nb a s e p a c k a g e = " b r . c o m . d e v m e d i a "/ > < ! -D i za oS p r i n gq u ee l ed e v eu s a rac o n f i g u r a od a sa n n o t a t i o n s> < m v c : a n n o t a t i o n d r i v e n/ > < ! -D e f i n ep a g i n ai n i c i a l( i n g n o r aac o n f i g u r a od ow e b . x m l ) > < m v c : v i e w c o n t r o l l e rp a t h = " / "v i e w n a m e = " h e l l o w o r l d " / >

< ! -D e f i n eo n d ee s t l o c a l i z a d aa sv i e w sd aa p l i c a o ,eq u a lae x t e n od a sm < ! n op o rm e i od om a p e a m e n t o > < p r o p e r t yn a m e = " p r e f i x "v a l u e = " / W E B I N F / v i e w s / " / > < p r o p e r t yn a m e = " s u f f i x "v a l u e = " . j s p " / > < / b e a n > < / b e a n s >

E s t oc o n f i g u r a d a sd e n t r od aW E B I N Fp a r aq u eou s u r i on op o s s aa c e s s a l a s ,s

< b e a nc l a s s = " o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . I n t e r n a l R e s o u r c e V i e w R e s o l v e r "

Arquivo de configurao bem simples no? Claro, uma aplicao simples, e a medida que sua aplicao cresce, basta ir acrescentando mdulos de acordo com sua necessidade, evitando assim um consumo gigantesco de memria com coisas que voc nunca vai utilizar na sua aplicao. Agora vamos dizer a nossa aplicao Web para carregar o Spring, mas como? O bom e velho arquivo web.xml, ser necessria apenas a configurao do Servlet do Spring, nada sobrenatural , veja como deve ficar o nosso arquivo. Listagem 2: Arquivo web.xml

< ? x m lv e r s i o n = " 1 . 0 "e n c o d i n g = " U T F 8 " ? >

< w e b a p px m l n s : x s i = " h t t p : / / w w w . w 3 . o r g / 2 0 0 1 / X M L S c h e m a i n s t a n c e "x m l n s = " h t t p : / / j a v a . s u n . c


http://www.devmedia.com.br/introducao-ao-spring-framework/26212 5/10

17/2/2014

Introduo ao Spring Framework

< d i s p l a y n a m e > h e l l o s p r i n g < / d i s p l a y n a m e > < ! -C o n f i g u r aoS p r i n gS e r v l e t> < s e r v l e t > < s e r v l e t n a m e > S p r i n g S e r v l e t < / s e r v l e t n a m e > < i n i t p a r a m > < p a r a m n a m e > c o n t e x t C o n f i g L o c a t i o n < / p a r a m n a m e > / W E B I N F / s p r i n g / a p p l i c a t i o n c o n t e x t . x m l < / p a r a m v a l u e > < / i n i t p a r a m > < l o a d o n s t a r t u p > 1 < / l o a d o n s t a r t u p > < / s e r v l e t > < s e r v l e t m a p p i n g > < ! -M a p e i aoS e r v l e t> < s e r v l e t n a m e > S p r i n g S e r v l e t < / s e r v l e t n a m e > < u r l p a t t e r n > / < / u r l p a t t e r n > < / s e r v l e t m a p p i n g > < / w e b a p p >

< s e r v l e t c l a s s > o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . D i s p a t c h e r S e r v l e t < / s e r v l

< p a r a m v a l u e > < ! -E s p e c i f i c aq u ea r q u i v od ec o n f i g u r a os e r ac

Exibindo uma pagina


Ento s isso? Podemos rodar a aplicao? Calma, ainda no existe nenhuma pgina, ento criaremos uma dentro da pasta WEB-INF/view com o nome de "helloworld.jsp. Veja que o mesmo nome o qual configuramos como pgina inicial no application-context.xml. Listagem 3: Definindo a pgina inicial

< ! -D e f i n ep a g i n ai n i c i a l( i n g n o r aac o n f i g u r a od ow e b . x m l ) > < m v c : v i e w c o n t r o l l e rp a t h = " / "v i e w n a m e = " h e l l o w o r l d " / >

Nossa pgina ficar assim. Listagem 4: Pgina helloword.jsp

< % @p a g el a n g u a g e = " j a v a "c o n t e n t T y p e = " t e x t / h t m l ;c h a r s e t = I S O 8 8 5 9 1 "


http://www.devmedia.com.br/introducao-ao-spring-framework/26212 6/10

17/2/2014

Introduo ao Spring Framework

p a g e E n c o d i n g = " I S O 8 8 5 9 1 " % > < h t m l > < h e a d > < m e t ah t t p e q u i v = " C o n t e n t T y p e "c o n t e n t = " t e x t / h t m l ;c h a r s e t = I S O 8 8 5 9 1 " > < t i t l e > D e vM e d i aH e l l oS p r i n g < / t i t l e > < / h e a d > < b o d y > < p > H e l l oW o r l dS p r i n g < / p > < b r / > < b r / > < ah r e f = " b e m v i n d o " > I rp a r ap a g i n ab e mv i n d o < / a > < / b o d y > < / h t m l >

< ! D O C T Y P Eh t m lP U B L I C" / / W 3 C / / D T DH T M L4 . 0 1T r a n s i t i o n a l / / E N "" h t t p : / / w w w . w 3 . o r g / T R / h t

Agora sim, voc j pode rodar o projeto no tomcat, veja o resultado na figura 3.

Figura 3: Exibindo um Hello World

Controllers
Exibir uma pgina muito simples, mas qual a diferena do Spring? Vamos falar sobre o controle de navegao da aplicao. O Spring utiliza os chamados Controllers, que so
http://www.devmedia.com.br/introducao-ao-spring-framework/26212 7/10

17/2/2014

Introduo ao Spring Framework

classes mapeadas atravs de annotations que servem para dizer aplicao o que exibir quando for requisitada uma pgina, ou envio de informaes, uma espcie de Servlet do JSP, mas bem mais fcil de se trabalhar. Vamos a um exemplo, criaremos uma classe chamada HelloController no pacote br.com.devmedia.controllers, se o pacote no existir, crie-o. Vamos anotar essa classe com o @Controller, que diz ao Spring que essa classe vai funcionar como uma espcie de Servlet para a aplicao, ou seja, vai receber requisies trat-las e responder ao usurio. Listagem 5: Anotao @Controller

@ C o n t r o l l e r p u b l i cc l a s sH e l l o C o n t r o l l e r { . . . }

Espera ai, mas como minha aplicao vai saber qual requisio deve ser tratada pelo meu @Controller? Simples, atravs da anotao @RequestMapping, ela vai verificar qual url est sendo solicitada e enviar para o @Controller que contm a anotao com a url especfica, veja. Listagem 6: Mtodo bemVindo

@ C o n t r o l l e r p u b l i cc l a s sH e l l o C o n t r o l l e r{ @ R e q u e s t M a p p i n g ( " / b e m v i n d o " ) p u b l i cM o d e l A n d V i e wb e m V i n d o ( M o d e lm o d e l ) { m o d e l . a d d A t t r i b u t e ( " b e m v i n d o "," O l h as q u ef a c i ld i z e rb e mv i n d o " ) ; r e t u r nn e wM o d e l A n d V i e w ( " b e m v i n d o " ) ; } }

Explicando o cdigo, o @RequestMapping diz que quando for requisitada a url /bemvindo, ser executado o mtodo bemVindo() da classe HelloController. Mas o que esse Model e de onde ele vem? Por que ele est ali? O Model no um parmetro obrigatrio, e com um
http://www.devmedia.com.br/introducao-ao-spring-framework/26212 8/10

17/2/2014

Introduo ao Spring Framework

pouco mais de experincia ver que muita coisa no . O Model vai servir para adicionar atributos para serem usados na tela, no se preocupe com detalhes, o Spring vai fazer isso por voc. Devem ter notado tambm o ModelAndView que est sendo retornado, ele na verdade vai dizer ao Spring que pgina ele vai exibir, no caso a bemvindo.jsp, mas poderia ser qualquer pgina que voc tiver dentro da pasta WEB-INF/views que o diretrio que foi mapeado para conter nossas views. Listagem 7: Mapeamento do diretrio das views

< b e a nc l a s s = " o r g . s p r i n g f r a m e w o r k . w e b . s e r v l e t . v i e w . I n t e r n a l R e s o u r c e V i e w R e s o l v e r " > < p r o p e r t yn a m e = " p r e f i x "v a l u e = " / W E B I N F / v i e w s / " / > < p r o p e r t yn a m e = " s u f f i x "v a l u e = " . j s p " / > < / b e a n >

Agora que temos o @Controller que vai tratar uma requisio, precisamos tambm da pgina que vai ser exibida, no caso a bemvindo.jsp. Criaremos ela dentro de WEBINF/views, e nessa pgina exibiremos o atributo passado pelo nosso @Controller, veja o cdigo da JSP. Listagem 8: Cdigo da pgina jsp

< % @p a g el a n g u a g e = " j a v a "c o n t e n t T y p e = " t e x t / h t m l ;c h a r s e t = I S O 8 8 5 9 1 " p a g e E n c o d i n g = " I S O 8 8 5 9 1 " % > < h t m l > < h e a d > < m e t ah t t p e q u i v = " C o n t e n t T y p e "c o n t e n t = " t e x t / h t m l ;c h a r s e t = I S O 8 8 5 9 1 " > < t i t l e > D e vM e d i aH e l l oS p r i n g < / t i t l e > < / h e a d > < b o d y > < p > P a g i n ad eb o a sv i n d a sq u et a l? < / p > < b r / > < p > < % =r e q u e s t . g e t A t t r i b u t e ( " b e m v i n d o " )% > < / p > < / b o d y > < / h t m l >

< ! D O C T Y P Eh t m lP U B L I C" / / W 3 C / / D T DH T M L4 . 0 1T r a n s i t i o n a l / / E N "" h t t p : / / w w w . w 3 . o r g / T R / h t

http://www.devmedia.com.br/introducao-ao-spring-framework/26212

9/10

17/2/2014

Introduo ao Spring Framework

Rode novamente a aplicao e veja o resultado, como na figura 4.

Figura 4: Apresentando pagina com atributo do @Controller

Concluindo
O que foi apresentado apenas a ponta do iceberg, a maior dificuldade justamente a configurao e o passo inicial, com essa dificuldade superada, agora estudar e usar tudo o que esse incrvel framework oferece. At a prxima.

Efraim Gentil
Estudante de Analise e Desenvolvimento de Sistemas, trabalha com desenvolvimento Web a mais de 2 anos com JAVA e outras linguagens.

http://www.devmedia.com.br/introducao-ao-spring-framework/26212

10/10

Você também pode gostar