{"id":1919,"date":"2014-08-01T23:26:13","date_gmt":"2014-08-02T02:26:13","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=1919"},"modified":"2014-08-01T23:26:13","modified_gmt":"2014-08-02T02:26:13","slug":"o-que-muda-no-spring-4-0","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=1919","title":{"rendered":"O que muda no Spring 4.0?"},"content":{"rendered":"<p><a href=\"http:\/\/www.casadocodigo.com.br\/products\/spring\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-1137 size-medium\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/10\/thumb_beta_spring_large-212x300.jpg\" alt=\"thumb_beta_spring_large\" width=\"212\" height=\"300\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/10\/thumb_beta_spring_large-212x300.jpg 212w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/10\/thumb_beta_spring_large.jpg 280w\" sizes=\"(max-width: 212px) 100vw, 212px\" \/><\/a>Como\u00a0escrevi um livro sobre o Spring Framework, n\u00e3o \u00e9 raro que eu receba perguntas pelas redes sociais a respeito da vers\u00e3o 4.0. Meu livro\u00a0<strong>ainda<\/strong> trata da vers\u00e3o 3.2, ent\u00e3o aquilo que disse nele ainda \u00e9 v\u00e1lido? Resposta r\u00e1pida: em 100% dos casos, sim.<\/p>\n<p>As mudan\u00e7as superficiais no Spring s\u00e3o raras: se seu projeto \u00e9 baseado na\u00a0vers\u00e3o 3.2 do framework, a migra\u00e7\u00e3o para o 4.0 \u00e9 muito tranquila. S\u00f3 \u00e9 necess\u00e1rio\u00a0alterar as depend\u00eancias do seu projeto para a nova vers\u00e3o na esmagadora maioria das vezes. Neste post irei falar sobre as mudan\u00e7as que considero serem as mais importantes.<\/p>\n<p>(n\u00e3o sabe o que \u00e9 o Spring Framework? Eu tenho um guia gratuito que pode te ajudar. Clique <a href=\"https:\/\/devkico.itexto.com.br\/?p=859\">aqui<\/a>!)<\/p>\n<h3>Pivotal entra em cena<\/h3>\n<p>Este \u00e9 o primeiro grande release do Spring sob a supervis\u00e3o\u00a0da Pivotal. Se havia receio a respeito da compet\u00eancia desta nova empresa, este se transformou em alegria, pois o trabalho que fizeram foi simplesmente fant\u00e1stico!<\/p>\n<p>Um dos principais objetivos da empresa foi melhorar a experi\u00eancia de in\u00edcio de projeto com o Spring, ent\u00e3o reformularam completamente o site oficial\u00a0(<a href=\"http:\/\/www.spring.io\">http:\/\/www.spring.io<\/a>) . As mudan\u00e7as v\u00e3o muito al\u00e9m do layout: inclu\u00edram uma s\u00e9rie de guias que ajudam os desenvolvedores a iniciarem da maneira mais r\u00e1pida poss\u00edvel seus projetos baseados tanto no Spring como tamb\u00e9m nas tecnologias baseadas neste framework.<\/p>\n<p>Os guias s\u00e3o muito diretos: f\u00e1ceis de ler e sem rodeios. Precisa implementar um servidor REST? Quer usar o GORM? Quer come\u00e7ar algo?\u00a0\u00c9 enorme a possibilidade de haver um guia pronto para que voc\u00ea possa por a m\u00e3o na massa\u00a0<strong>r\u00e1pido<\/strong>. Vale muito \u00e0 pena conferir os guias:\u00a0<a href=\"http:\/\/spring.io\/guides\">http:\/\/spring.io\/guides<\/a>. Al\u00e9m disto em cada subprojeto h\u00e1 um guia\u00a0que te mostra o b\u00e1sico da tecnologia em quest\u00e3o.<\/p>\n<h3>Rejuvenescendo o Spring<\/h3>\n<h4>Classes, m\u00e9todos e pacotes marcados\u00a0como obsoletos<\/h4>\n<p>Conforme o tempo passa todo projeto come\u00e7a a sofrer com seu c\u00f3digo legado. O pessoal da Pivotal ent\u00e3o tomou uma decis\u00e3o corajosa:\u00a0marcou como obsoletas diversas classes, m\u00e9todos e pacotes que compunham o c\u00f3digo fonte do Spring. Voc\u00ea pode ver a lista completa <a href=\"http:\/\/docs.spring.io\/spring-framework\/docs\/3.2.4.RELEASE_to_4.0.0.RELEASE\/\">neste link<\/a>.\u00a0Se seu projeto usa classes internas do framework (o que \u00e9 uma p\u00e9ssima pr\u00e1tica em qualquer framework), ent\u00e3o\u00a0algumas classes v\u00e3o ter de ser substitu\u00eddas em sua aplica\u00e7\u00e3o (voc\u00ea foi avisado!).<\/p>\n<p>Do 3.2 para o 4.0 seu projeto funcionar\u00e1 perfeitamente, mas a partir da vers\u00e3o 4.1 \u00e9 bem prov\u00e1vel que diversas destas classes n\u00e3o venham mais com o framework. \u00a0Em um primeiro momento soa desagrad\u00e1vel esta remo\u00e7\u00e3o em massa, mas na pr\u00e1tica \u00e9 vital para garantir a longevidade do projeto. Menos c\u00f3digo legado leva a um custo menor de manuten\u00e7\u00e3o e possibilita um foco maior na inclus\u00e3o de recursos realmente importantes para o desenvolvimento de novos projetos e para atender necessidades que est\u00e3o surgindo.<\/p>\n<h4>Olhando para a frente: suporte total ao Java 8, Java EE 6 e 7<\/h4>\n<p>O Spring 4.0 foi lan\u00e7ado antes do Java 8 e j\u00e1 vinha com suporte total \u00e0 nova vers\u00e3o da linguagem. Um ponto importante \u00e9 que agora a vers\u00e3o m\u00ednima do Java \u00e9 a 6.0: natural dado que o Java 5 j\u00e1 tem 10 anos (saiu em 2004). Voc\u00ea j\u00e1 pode tirar proveito de recursos como lambdas, refer\u00eancias a m\u00e9todos, suporte total \u00e0 nova API de tempo (java.time).<\/p>\n<p>Do lado Java EE \u00e9 importante mencionar que agora a vers\u00e3o m\u00ednima da especifica\u00e7\u00e3o ser\u00e1 a seis.\u00a0Muitas depend\u00eancias de terceiros (3rd party dependences) tamb\u00e9m sofreram com isto. A partir da vers\u00e3o 4.0 do Spring \u00a0estas devem ter sido desenvolvidas a partir de 2010. Exemplos interessantes: Hibernate 3.6+, EhCache 2.1+ e Groovy 1.8+.<\/p>\n<p>O objetivo disto tudo \u00e9 claro: estas medidas nos deram mais uns vinte anos de Spring (no m\u00ednimo) pois o custo de manuten\u00e7\u00e3o de tecnologias legadas daqui pra frente foi significativamente reduzido.<\/p>\n<h3>Groovy cada vez mais presente<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-235\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2008\/12\/groovylogo.png\" alt=\"groovylogo\" width=\"203\" height=\"100\" \/><\/p>\n<p>Este \u00e9 um ponto que\u00a0<strong>muito<\/strong> me alegra: Groovy est\u00e1 muito mais presente no Spring 4.0. N\u00f3s que programamos em Grails j\u00e1 usamos a linguagem\u00a0para declarar\u00a0nossos beans (nos rar\u00edssimos casos em que isto \u00e9 necess\u00e1rio) desde a vers\u00e3o 0.x do framework.\u00a0\u00c9 uma DSL bastante pr\u00e1tica mas que at\u00e9 ent\u00e3o estava dispon\u00edvel apenas para desenvolvedores Grails.<\/p>\n<p>Agora qualquer um pode usar esta DSL: voc\u00ea n\u00e3o precisa mais do Grails para declarar seus beans em Groovy. \u00c8\u00a0poss\u00edvel fazer isto em projetos Java de forma bastante tranquila gra\u00e7as \u00e0 inclus\u00e3o da\u00a0<em>Groovy Bean Definition Language<\/em>.<\/p>\n<p>Aqui fa\u00e7o uma aposta: a Pivotal percebe o valor do Grails. Prevejo cada vez mais recursos do Grails aparecerem no core do Spring Framework. Na vers\u00e3o 4.1 j\u00e1 est\u00e1 inclusive previsto o suporte a templates Groovy no Spring MVC.<\/p>\n<h3>Mudan\u00e7as no container de inje\u00e7\u00e3o de depend\u00eancias e invers\u00e3o de controle<\/h3>\n<p>Foram inclu\u00eddos alguns novos recursos que considero bastante interessantes. O primeiro deles diz respeito \u00e0 anota\u00e7\u00e3o @Lazy. At\u00e9 a vers\u00e3o 3.2 do framework n\u00f3s apenas a aplic\u00e1vamos na defini\u00e7\u00e3o de beans, fazendo com que estes s\u00f3 fossem iniciados quando necess\u00e1rios. Agora ela vai al\u00e9m: podemos aplic\u00e1-la tamb\u00e9m em pontos de inje\u00e7\u00e3o!<\/p>\n<p>A outra mudan\u00e7a interessante \u00e9 que agora podemos usar\u00a0<em>generics<\/em> como qualificadores de nossos beans. Abaixo est\u00e1 um exemplo que copiei <a href=\"http:\/\/docs.spring.io\/spring\/docs\/4.0.6.RELEASE\/spring-framework-reference\/htmlsingle\/#beans-generics-as-qualifiers\">direto da documenta\u00e7\u00e3o oficial <\/a>para ilustrar o seu uso:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\n@Autowired\r\nprivate Store&lt;String&gt; \u00a0storeString;\r\n\r\n@Autowired\r\nprivate Store&lt;Integer&gt; storeInteger;\r\n\r\n<\/pre>\n<p>Em algumas raras situa\u00e7\u00f5es \u00e9 bastante pr\u00e1tico.<\/p>\n<h3>Spring MVC com suporte a WebSocket!<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1921\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/wslogo.png\" alt=\"wslogo\" width=\"166\" height=\"166\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/wslogo.png 166w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/wslogo-150x150.png 150w\" sizes=\"(max-width: 166px) 100vw, 166px\" \/><\/p>\n<p>Uma adi\u00e7\u00e3o\u00a0que justifica o upgrade. Agora o Spring oferece suporte nativo \u00e0 tecnologia WebSocket e, claro: da maneira Spring, ou seja, \u00e9 f\u00e1cil de usar! Mais do que isto, eles tamb\u00e9m oferecem suporte a <a href=\"https:\/\/github.com\/sockjs\">SockJS<\/a>, que \u00e9 uma tecnologia de fallback que permite simular websockets em navegadores mais antigos.<\/p>\n<h3>E o melhor deixei pro fim: Spring Boot<\/h3>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1922\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/spring-boot-project-logo.png\" alt=\"spring-boot-project-logo\" width=\"187\" height=\"187\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/spring-boot-project-logo.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2014\/08\/spring-boot-project-logo-150x150.png 150w\" sizes=\"(max-width: 187px) 100vw, 187px\" \/><\/p>\n<p>O Spring Boot n\u00e3o \u00e9 um componente do Spring, mas sim um projeto independente. A id\u00e9ia \u00e9 tornar a cria\u00e7\u00e3o de projetos baseados em Spring\u00a0<strong>muito<\/strong> mais \u00e1gil, f\u00e1cil, desburocratizada, leve e foda. E eles conseguem.<\/p>\n<p>O foco principal por tr\u00e1s da vers\u00e3o 4.0 \u00e9 tornar o desenvolvimento com Spring ainda mais r\u00e1pido. O Boot nos possibilita isto ao trazer para o framework o conceito de &#8220;conven\u00e7\u00e3o sobre configura\u00e7\u00e3o&#8221;. Na documenta\u00e7\u00e3o oficial do projeto voc\u00ea ver\u00e1 diversas vezes \u00a0&#8220;opinionated view&#8221;, mas no fundo o que querem dizer \u00e9 &#8220;conven\u00e7\u00e3o sobre configura\u00e7\u00e3o&#8221; (COC).<\/p>\n<p>O que \u00e9 COC: para a maior parte das suas tarefas, a configura\u00e7\u00e3o \u00e9 essencialmente a mesma. Ent\u00e3o por que obrigar o programador a se repetir? O Boot tr\u00e1s uma s\u00e9rie de configura\u00e7\u00f5es pr\u00e9-prontas para voc\u00ea: se precisar de algo mais customizado, basta sobrescrev\u00ea-las. Diversos requisitos n\u00e3o funcionais j\u00e1 v\u00eam pr\u00e9-configurados no Boot, e isto ir\u00e1 te poupar muito tempo.<\/p>\n<p>Mais do que isto, o Spring Boot facilita o desenvolvimento de micro servi\u00e7os (j\u00e1 escrevi sobre esta arquitetura <a href=\"https:\/\/devkico.itexto.com.br\/?p=1755\">aqui <\/a>e <a href=\"https:\/\/devkico.itexto.com.br\/?p=1768\">aqui<\/a>) e muda bastante a vis\u00e3o que temos sobre o desenvolvimento Java EE. Pra come\u00e7ar, o servidor \u00e9 embarcado por default, ent\u00e3o voc\u00ea executa sua aplica\u00e7\u00e3o com o comando\u00a0<em>java -jar\u00a0<\/em>(tamb\u00e9m \u00e9 poss\u00edvel gerar um war se voc\u00ea quiser).<\/p>\n<p>E o tempo que voc\u00ea leva para iniciar um projeto Spring Boot? Apenas o de copiar e colar os trechos de c\u00f3digo Maven presentes no site do projeto no seu arquivo pom.xml. E sabem de outra coisa? Este ser\u00e1 o \u00fanico XML que voc\u00ea usar\u00e1 em seu projeto (e j\u00e1 era assim na vers\u00e3o 3.2). Um dos objetivos do boot \u00e9 acabar com o mito de que gastamos muito tempo com arquivos XML no Spring.<\/p>\n<p>Infelizmente este post \u00e9 pequeno demais para que eu possa falar mais a respeito do Boot. MInha sugest\u00e3o \u00e9 que voc\u00ea passeie pelo <a href=\"http:\/\/projects.spring.io\/spring-boot\/\">site oficial do projeto<\/a>\u00a0primeiro.<\/p>\n<p>(sem exagero: na minha opini\u00e3o este projeto muda radicalmente nossa vis\u00e3o sobre desenvolvimento de aplica\u00e7\u00f5es corporativas na plataforma Java)<\/p>\n<h3>Concluindo<\/h3>\n<p>Apesar das mudan\u00e7as, o Spring 4.0 ainda \u00e9 usado exatamente como estamos acostumados na vers\u00e3o 3.x. H\u00e1 novos recursos, como a DSL em Groovy para declarar beans, mas tirando isto, tudo o que lhes falei no livro\u00a0<strong>ainda \u00e9\u00a0<\/strong>v\u00e1lido e n\u00e3o precisa ser alterado (se leu o livro e encontrou pontos que precisam ser alterados, entre em contato comigo, ok?).<\/p>\n<p>O que fica claro lendo a documenta\u00e7\u00e3o e diversos posts na Internet \u00e9 que a Pivotal conseguiu rejuvenescer o Spring: e muito! Quando escrevi o livro muita gente n\u00e3o via vantagem em usar o framework dados os avan\u00e7os do Java EE 7. Hoje com certeza o Spring est\u00e1 de novo na vanguarda: mais leve, t\u00e3o simples como antes e surgindo projetos cada vez mais interessantes como o Spring Boot, Spring Data, Spring XD e tantos outros.<\/p>\n<p>Estas foram as novidades do Spring 4 que mais me chamaram a aten\u00e7\u00e3o. E sabem o que acho mais bonito? Exatamente pelo fato do projeto sempre ter ser baseado\u00a0<strong>apenas<\/strong> nos conceitos de Invers\u00e3o de Controle, Inje\u00e7\u00e3o de Depend\u00eancias e AOP permitiram que este evolu\u00edsse sem que com isto seus usu\u00e1rios necessitassem reaprender o framework em sua nova vers\u00e3o.<\/p>\n<p>O framework evoluiu, mas voc\u00ea que conhece os conceitos (e tor\u00e7o para que tenha lido meu livro :)) n\u00e3o ficou obsoleto com isto: apenas ganhou alguns novos brinquedos para aplicar em seus projetos. ;)<\/p>\n<p>PS:<\/p>\n<p>j\u00e1 est\u00e1 planejada a atualiza\u00e7\u00e3o do &#8220;Vire o Jogo com Spring&#8221;. Se voc\u00ea comprou pela Casa do C\u00f3digo, receber\u00e1 atualiza\u00e7\u00f5es automaticamente. Ent\u00e3o d\u00e1 pra comprar agora e garantir sua atualiza\u00e7\u00e3o em um futuro bem pr\u00f3ximo. :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como\u00a0escrevi um livro sobre o Spring Framework, n\u00e3o \u00e9 raro que eu receba perguntas pelas redes sociais a respeito da vers\u00e3o 4.0. Meu livro\u00a0ainda trata da vers\u00e3o 3.2, ent\u00e3o aquilo que disse nele ainda \u00e9 v\u00e1lido? Resposta r\u00e1pida: em 100% dos casos, sim. As mudan\u00e7as superficiais no Spring s\u00e3o raras: se seu projeto \u00e9 baseado [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":860,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[62,59],"tags":[],"class_list":["post-1919","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring","category-spring-framework"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>O que muda no Spring 4.0? - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=1919\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"O que muda no Spring 4.0? - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Como\u00a0escrevi um livro sobre o Spring Framework, n\u00e3o \u00e9 raro que eu receba perguntas pelas redes sociais a respeito da vers\u00e3o 4.0. Meu livro\u00a0ainda trata da vers\u00e3o 3.2, ent\u00e3o aquilo que disse nele ainda \u00e9 v\u00e1lido? Resposta r\u00e1pida: em 100% dos casos, sim. As mudan\u00e7as superficiais no Spring s\u00e3o raras: se seu projeto \u00e9 baseado [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=1919\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2014-08-02T02:26:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"432\" \/>\n\t<meta property=\"og:image:height\" content=\"288\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1919\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=1919\",\"name\":\"O que muda no Spring 4.0? - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1919#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1919#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif\",\"datePublished\":\"2014-08-02T02:26:13+00:00\",\"dateModified\":\"2014-08-02T02:26:13+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1919#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=1919\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1919#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif\",\"width\":\"432\",\"height\":\"288\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1919#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"O que muda no Spring 4.0?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"O que muda no Spring 4.0? - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=1919","og_locale":"pt_BR","og_type":"article","og_title":"O que muda no Spring 4.0? - \/dev\/Kico","og_description":"Como\u00a0escrevi um livro sobre o Spring Framework, n\u00e3o \u00e9 raro que eu receba perguntas pelas redes sociais a respeito da vers\u00e3o 4.0. Meu livro\u00a0ainda trata da vers\u00e3o 3.2, ent\u00e3o aquilo que disse nele ainda \u00e9 v\u00e1lido? Resposta r\u00e1pida: em 100% dos casos, sim. As mudan\u00e7as superficiais no Spring s\u00e3o raras: se seu projeto \u00e9 baseado [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=1919","og_site_name":"\/dev\/Kico","article_published_time":"2014-08-02T02:26:13+00:00","og_image":[{"width":"432","height":"288","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif","type":"image\/gif"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=1919","url":"https:\/\/devkico.itexto.com.br\/?p=1919","name":"O que muda no Spring 4.0? - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1919#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1919#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif","datePublished":"2014-08-02T02:26:13+00:00","dateModified":"2014-08-02T02:26:13+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1919#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=1919"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=1919#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif","width":"432","height":"288"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=1919#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"O que muda no Spring 4.0?"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/11\/spring_logo.gif","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1919"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1919"}],"version-history":[{"count":3,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1919\/revisions"}],"predecessor-version":[{"id":1924,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1919\/revisions\/1924"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/860"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1919"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1919"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}