<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2933958600735057324</id><updated>2011-11-27T15:38:09.994-08:00</updated><category term='java programação'/><title type='text'>Vida de Coder</title><subtitle type='html'>Encontram-se aqui, notas da singela vida de um grupo de coders.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vidadecoder.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vidadecoder.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lia</name><uri>http://www.blogger.com/profile/15956961475640084984</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Sablw-QYDtI/AAAAAAAAAAM/CBANIQWKVas/s1600-R/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2933958600735057324.post-6885377426181099830</id><published>2009-03-16T11:14:00.000-07:00</published><updated>2009-03-16T12:10:44.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java programação'/><title type='text'>Autowiring</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Um &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;adendo&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; à &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;postagem&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; do Conde:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Se quiser deixar tudo "anotado", inclusive seu &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;DAO&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;, não precisa configurar o &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;SessionFactory&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;, uma opção é colocar ele como "&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;autowired&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;".&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Ou configure "na mão":&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#006600;"&gt;&lt;span style="font-size:85%;"&gt;@&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Autowired&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#666666;"&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#663366;"&gt;&lt;span style="font-size:85%;"&gt;public&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color:#666666;"&gt;&lt;span style="font-size:85%;"&gt;ISIDaoImpl&lt;/span&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;span style="font-size:85%;"&gt;SessionFactory&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;sessionFactory&lt;/span&gt;) {&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;setSessionFactory&lt;/span&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;span style="font-size:85%;"&gt;sessionFactory&lt;/span&gt;);&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Ou coloque  como padrão no seu contexto:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color:#3333ff;"&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt;    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;    xmlns:context="http://www.springframework.org/schema/context"&lt;br /&gt;    xsi:schemaLocation="http://www.springframework.org/schema/beans&lt;br /&gt;        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;        http://www.springframework.org/schema/context&lt;br /&gt;        http://www.springframework.org/schema/context/spring-context-2.5.xsd"&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;&lt;span style="color:#6633ff;"&gt;&lt;br /&gt;&lt;strong&gt;    default-autowire="byName"&amp;gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;&lt;span style="color:#6633ff;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;beans xmlns="http://www.springframework.org/schema/beans" xsi="http://www.w3.org/2001/XMLSchema-instance" context="http://www.springframework.org/schema/context" schemalocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-2.5.xsd" font=""&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;O &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;autowire&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; significa que o &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Spring&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; irá descobrir qual é a dependência. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;No segundo exemplo, você nem precisa colocar na classe o que será &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;autowired&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;. O &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Spring&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; vai procurar todas as dependências da classe e se encontrar outra classe com o mesmo nome, irá &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;injetar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt; esta dependência. Como mágica!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Embora este método seja muito prático, é bom não abusar. Ele pode incentivar alguns erros humanos e inconsistência. Às vezes apesar de levar mais tempo, é melhor ter o xml com as dependências explicitas para maior controle.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Além disso, essas comodidades podem custar tempo. Tempo de execução! Segundo o blog &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://objectlab.blogspot.com/2007/06/spring-prototypes-expensive-auto-wire.html"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;ObjectLab&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;, autowiring é mais lento. Eu pessoalmente não fiz o teste. Na grande maioria das vezes esse é um fator de peso na modelagem de um sistema, então talvez ainda valha a pena usar um contexto artesanal.  &lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;O que acham? Qual á a experiência de vocês com isso? Vale a pena sacrificar rapidez do sistema para praticidade do código?&lt;/span&gt;&lt;/p&gt;&lt;span style="color:#3366ff;"&gt;&lt;beans xmlns="http://www.springframework.org/schema/beans" xsi="http://www.w3.org/2001/XMLSchema-instance" context="http://www.springframework.org/schema/context" schemalocation="http://www.springframework.org/schema/beans         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd         http://www.springframework.org/schema/context         http://www.springframework.org/schema/context/spring-context-2.5.xsd" font=""&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/beans&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2933958600735057324-6885377426181099830?l=vidadecoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vidadecoder.blogspot.com/feeds/6885377426181099830/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vidadecoder.blogspot.com/2009/03/um-adendo-postagem-do-conde-se-quiser.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/6885377426181099830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/6885377426181099830'/><link rel='alternate' type='text/html' href='http://vidadecoder.blogspot.com/2009/03/um-adendo-postagem-do-conde-se-quiser.html' title='Autowiring'/><author><name>Lia</name><uri>http://www.blogger.com/profile/15956961475640084984</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Sablw-QYDtI/AAAAAAAAAAM/CBANIQWKVas/s1600-R/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2933958600735057324.post-5333527765299395567</id><published>2009-02-27T06:33:00.001-08:00</published><updated>2009-02-27T06:42:08.235-08:00</updated><title type='text'>Chuck Norris</title><content type='html'>&lt;p&gt;&lt;p&gt;Alguém viu isso?&lt;/p&gt;&lt;p&gt;http://www.submarino.com.br/produto/6/21321654/biography+-+chuck+norris+-+vox+music+comercio+importacao+exp.ltda.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Saf69bMpSTI/AAAAAAAAAAw/tkcHS7tZyYI/s1600-h/image002.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Saf69bMpSTI/AAAAAAAAAAw/tkcHS7tZyYI/s320/image002.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5307486619059177778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2933958600735057324-5333527765299395567?l=vidadecoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vidadecoder.blogspot.com/feeds/5333527765299395567/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/chuck-norris.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/5333527765299395567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/5333527765299395567'/><link rel='alternate' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/chuck-norris.html' title='Chuck Norris'/><author><name>Lia</name><uri>http://www.blogger.com/profile/15956961475640084984</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Sablw-QYDtI/AAAAAAAAAAM/CBANIQWKVas/s1600-R/me.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Saf69bMpSTI/AAAAAAAAAAw/tkcHS7tZyYI/s72-c/image002.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2933958600735057324.post-6227043029072922115</id><published>2009-02-27T06:22:00.000-08:00</published><updated>2009-02-27T06:41:35.321-08:00</updated><title type='text'>Funcionalidades bizarras do Java</title><content type='html'>&lt;p&gt;Alguém já viu var args aplicado em algum projeto de verdade?&lt;/p&gt;&lt;p&gt;E generics (com wildcards)?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2933958600735057324-6227043029072922115?l=vidadecoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vidadecoder.blogspot.com/feeds/6227043029072922115/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/alguem-ja-viu-var-args-aplicado-em.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/6227043029072922115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/6227043029072922115'/><link rel='alternate' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/alguem-ja-viu-var-args-aplicado-em.html' title='Funcionalidades bizarras do Java'/><author><name>Lia</name><uri>http://www.blogger.com/profile/15956961475640084984</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Sablw-QYDtI/AAAAAAAAAAM/CBANIQWKVas/s1600-R/me.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2933958600735057324.post-7356112682087995726</id><published>2009-02-26T14:10:00.000-08:00</published><updated>2009-02-27T12:57:34.123-08:00</updated><title type='text'>Spring - Injeção de dependência por anotação</title><content type='html'>Primeiramente gostaria de agradecer a Lia por ter me convidado a postar neste blog. Agora vamos ao que interessa :-)&lt;br /&gt;&lt;br /&gt;Algo que tenho usado no meu dia a dia é injeção de dependência no Spring por anotação. Nada contra configurar todos os  beans em um contexto XML, mas as vezes usar anotação facilita um pouco nossa vida.&lt;br /&gt;&lt;br /&gt;As anotações são muito simples, vejam:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@Component&lt;/span&gt; - Anotação que faz com que o bean seja registrado no Spring. Esta anotação é genérica e serve para qualquer bean, seja ele um serviço, um dao, um controller, etc...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@Resource&lt;/span&gt; - Procura pelo bean especificado e o injeta na classe, exemplo, @Resource(name="serviceA") vai procurar pelo bean serviceA que está registrado no contexto Spring.&lt;br /&gt;&lt;br /&gt;As anotações abaixo são especializações de @Component e servem para registrar o bean no spring, entretanto, podem prover algumas funcionalidades inerentes a camada a que pertencem:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@Repository&lt;/span&gt; - Para anotar sua camada de persistência.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@Service&lt;/span&gt; - Para anotar sua camada de serviço&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;@Controller&lt;/span&gt; - Para anotar sua camada de controller.&lt;br /&gt;&lt;br /&gt;Para que o spring possa procurar por classes anotadas no seu classpath, é necessário adicionar a seguinte linha no seu applicationContext.xml :&lt;br /&gt;&lt;span style="font-weight:bold;"&gt; &amp;lt;context:component-scan package="br.com..."&amp;gt; &lt;/span&gt;&lt;br /&gt;onde base-package seria a partir de qual pacote você deseja que o spring procure por beans gerenciaveis.&lt;br /&gt;&lt;br /&gt;Vou mostrar um exemplo muito simples de como utilizar o spring desta forma...&lt;br /&gt;&lt;br /&gt;A estrutura do projeto é a seguinte:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_L406LdplWy0/SagA2BbcOcI/AAAAAAAAAFA/1Yp4g9tvMlU/s1600-h/project_structure_2.jpg"&gt;&lt;img style="cursor: pointer; width: 205px; height: 320px;" src="http://3.bp.blogspot.com/_L406LdplWy0/SagA2BbcOcI/AAAAAAAAAFA/1Yp4g9tvMlU/s320/project_structure_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5307493088952596930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O applicationContext.xml fica desta forma:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans" xsi="http://www.w3.org/2001/XMLSchema-instance" context="http://www.springframework.org/schema/context" schemalocation="http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context-2.5.xsd"&amp;gt;&lt;br /&gt;&lt;br /&gt;      &amp;lt;context:component-scan package="br.com.vidadecoder"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/context:component-scan&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A classe ServiceA:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;package br.com.vidadecoder.service;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;&lt;br /&gt;@Service(value="serviceA") //Faz com que o Spring registre o bean como serviceA no contexto.&lt;br /&gt;public class ServiceA {&lt;br /&gt;public void doServiceAStuff() {&lt;br /&gt;System.out.println("Doing something with service A");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A classe ServiceB:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;package br.com.vidadecoder.service;&lt;br /&gt;import org.springframework.stereotype.Service;&lt;br /&gt;&lt;br /&gt;@Service("serviceB") //Faz com que o Spring registre o bean como serviceB no contexto.&lt;br /&gt;&lt;context:component-scan package="br.com..."&gt;public class ServiceB {&lt;br /&gt;public void doServiceBStuff() {&lt;br /&gt;System.out.println("Doing something with service B");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;O bean Facade, que é o bean onde estes dois serviços serão injetados:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;package br.com.vidadecoder.controller;&lt;br /&gt;&lt;br /&gt;import javax.annotation.Resource;&lt;br /&gt;import org.springframework.stereotype.Controller;&lt;br /&gt;import br.com.vidadecoder.service.ServiceA;&lt;br /&gt;import br.com.vidadecoder.service.ServiceB;&lt;br /&gt;&lt;br /&gt;@Controller(value="facade")&lt;br /&gt;public class Facade {&lt;br /&gt;&lt;br /&gt;@Resource(name="serviceA") //Faz com que o spring injete o bean serviceA&lt;br /&gt;private ServiceA serviceA;&lt;br /&gt;&lt;br /&gt;@Resource(name="serviceB")&lt;/context:component-scan&gt;//Faz com que o spring injete o bean serviceB&lt;br /&gt;&lt;context:component-scan package="br.com..."&gt;    private ServiceB serviceB;&lt;br /&gt;&lt;br /&gt;public ServiceA getServiceA() {&lt;br /&gt;return serviceA;&lt;br /&gt;}&lt;br /&gt;public void setServiceA(ServiceA serviceA) {&lt;br /&gt;this.serviceA = serviceA;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public ServiceB getServiceB() {&lt;br /&gt;return serviceB;&lt;br /&gt;}&lt;br /&gt;public void setServiceB(ServiceB serviceB) {&lt;br /&gt;this.serviceB = serviceB;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void runBothServices() {&lt;br /&gt;serviceA.doServiceAStuff();&lt;br /&gt;serviceB.doServiceBStuff();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;e por fim classe Main:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;package br.com.vidadecoder.cmd;&lt;br /&gt;&lt;br /&gt;import org.springframework.context.support.ClassPathXmlApplicationContext;&lt;br /&gt;import br.com.vidadecoder.controller.Facade;&lt;br /&gt;&lt;br /&gt;public class Main {&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");&lt;br /&gt;Facade facade = (Facade) ctx.getBean("facade");&lt;br /&gt;facade.runBothServices();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Para maiores informações, acessem a documentação do Spring, na parte Annotation Driven Configuration:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#beans-stereotype-annotations"&gt; Documentação do Spring &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Neste exemplo utilizei o Spring na versão 2.5 .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2933958600735057324-7356112682087995726?l=vidadecoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vidadecoder.blogspot.com/feeds/7356112682087995726/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/spring-injecao-de-dependencia-por.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/7356112682087995726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/7356112682087995726'/><link rel='alternate' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/spring-injecao-de-dependencia-por.html' title='Spring - Injeção de dependência por anotação'/><author><name>Conde</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_L406LdplWy0/SagA2BbcOcI/AAAAAAAAAFA/1Yp4g9tvMlU/s72-c/project_structure_2.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2933958600735057324.post-8714930477113856064</id><published>2009-02-26T10:49:00.000-08:00</published><updated>2009-02-26T10:51:32.395-08:00</updated><title type='text'>Primeiro Post</title><content type='html'>&lt;p&gt;Sejam bem-vindos ao blog Vida de &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Coder&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;Esperamos compartilhar nossas experiências técnicas, pessoais e profissionais por aqui. Desde as mais básicas até as mais bizarras.&lt;/p&gt;&lt;p&gt;Divirtam-se!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2933958600735057324-8714930477113856064?l=vidadecoder.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vidadecoder.blogspot.com/feeds/8714930477113856064/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/primeiro-post.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/8714930477113856064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2933958600735057324/posts/default/8714930477113856064'/><link rel='alternate' type='text/html' href='http://vidadecoder.blogspot.com/2009/02/primeiro-post.html' title='Primeiro Post'/><author><name>Lia</name><uri>http://www.blogger.com/profile/15956961475640084984</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://4.bp.blogspot.com/_W7Ss4MmH3Zo/Sablw-QYDtI/AAAAAAAAAAM/CBANIQWKVas/s1600-R/me.jpg'/></author><thr:total>0</thr:total></entry></feed>
