<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>José Bovet Blog</title>
	<atom:link href="http://josebovet.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://josebovet.wordpress.com</link>
	<description>El verdadero sentido de la vida consiste en plantar árboles a cuya sombra no podrá probablemente sentarse nunca el que los plantó</description>
	<lastBuildDate>Sat, 30 Jul 2011 02:31:55 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='josebovet.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>José Bovet Blog</title>
		<link>http://josebovet.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://josebovet.wordpress.com/osd.xml" title="José Bovet Blog" />
	<atom:link rel='hub' href='http://josebovet.wordpress.com/?pushpress=hub'/>
		<item>
		<title>El espacio de trabajo en casa</title>
		<link>http://josebovet.wordpress.com/2011/06/20/el-espacio-de-trabajo-en-casa/</link>
		<comments>http://josebovet.wordpress.com/2011/06/20/el-espacio-de-trabajo-en-casa/#comments</comments>
		<pubDate>Tue, 21 Jun 2011 02:41:59 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=291</guid>
		<description><![CDATA[Hace tiempo atrás,  por un tema de comodidad, decidí meter el escritorio al dormitorio&#8230; ¡que gran equivocación!, no considero que a veces sea una persona que esta al ciento por ciento concentrada en algo, me pueden estar platicando, y  yo&#8230;  pensando en como esta el tiempo,  en  el ruido de los chicos en el patio, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=291&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">Hace tiempo atrás,  por un tema de comodidad, decidí meter el escritorio al dormitorio&#8230; ¡que gran equivocación!, no considero que a veces sea una persona que esta al ciento por ciento concentrada en algo, me pueden estar platicando, y  yo&#8230;  pensando en como esta el tiempo,  en  el ruido de los chicos en el patio, el color del piso, en la mancha que no estaba ayer o nunca vi,   etc, soy un tanto distraído, creo solo un poco&#8230; en definitiva: muchas distracciones a la hora de trabajar en la computadora, recuerdo cuando estudiaba&#8230; que tiempos!; en ese entonces tenia la computadora portátil; en un principio, bastante cómodo era estar metido en la cama, o la movilidad que me proporcionaba; todo cambio con el tiempo, no había cosa mas desagradable que trabajar acostado; a excepción de ver alguna película metido entre sabanas; sin contar esto, si ya tenia problemas de concentración, me era completamente incomodo.</p>
<p style="text-align:justify;">Años mas tarde decidí volver al escritorio, e invertí en uno, así también en  una cómoda silla, y un PC mas o menos decente; la sensación increíble, trabajar a gusto, poder tener libros y cuadernos donde rayar,  lápices y plumones a mano, muy cómodo en verdad, pero tuve que reciclar el portátil anterior, y solo me quede con el de escritorio, hasta allí todo bien, hasta que&#8230; tuve la necesidad de moverme otra vez&#8230; perdí muchos eventos interesantes por no tener la movilidad en un pc, y bueno&#8230; volví a invertir en una computadora portátil&#8230; como se sabe, todos somos generales después de la guerra&#8230;,y aprendí a mezclar ambas cosas,confort y movilidad,  compre unos cables para poder conectar al monitor del escritorio, un teclado y mouse inalámbricos, y ahora puedo estar a gusto trabajando, a dos monitores y llevando conmigo la información a todos lados&#8230; Ahora el escritorio salió del dormitorio,  se fueron las distracciones de recostarse en la cama, de ver la televisión, de andar de aquí para allá, ahora me puedo enfocar, y veo notablemente el cambio, siento que hago mucho mas en menos tiempo, estoy mucho mas concentrado en lo que estoy haciendo.</p>
<p style="text-align:justify;">El saber escoger el espacio de trabajo es importante, trata de separar aguas(el dormitorio es para descansar, entre otras&#8230;),  si vas a trabajar desde la casa, crea tu propio entorno, que sea tu lugar especial, pon fotografías, lápices, libros, notas, música, etc, lo que quieras, si vas a pasar bastantes horas sentado, no crees que es una muy buena inversión tu comodidad?&#8230;</p>
<p style="text-align:justify;">yo ya estoy empezando a construir el mio&#8230; y tu no te ánimas?&#8230;</p>
<p>si andas falta de idea, te dejo algo para que te inspires <a href="http://www.myinkblog.com/2011/03/29/found-on-flickr-100-amazing-office-workspaces-photos/">link</a></p>
<p><a href="http://josebovet.files.wordpress.com/2011/06/dcb4402905804c939da8b2d68767dc07_7.jpg"><img class="aligncenter size-full wp-image-292" title="dcb4402905804c939da8b2d68767dc07_7" src="http://josebovet.files.wordpress.com/2011/06/dcb4402905804c939da8b2d68767dc07_7.jpg?w=600&#038;h=600" alt="" width="600" height="600" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/291/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/291/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/291/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=291&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2011/06/20/el-espacio-de-trabajo-en-casa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2011/06/dcb4402905804c939da8b2d68767dc07_7.jpg" medium="image">
			<media:title type="html">dcb4402905804c939da8b2d68767dc07_7</media:title>
		</media:content>
	</item>
		<item>
		<title>Cloud Foundry: perspectiva de un desarrollador.</title>
		<link>http://josebovet.wordpress.com/2011/04/24/cloud-foundry-perspectiva-de-un-desarrollador/</link>
		<comments>http://josebovet.wordpress.com/2011/04/24/cloud-foundry-perspectiva-de-un-desarrollador/#comments</comments>
		<pubDate>Sun, 24 Apr 2011 19:40:09 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[cloudfoundry]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[vmware]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=286</guid>
		<description><![CDATA[Dave McCrory nos presenta la perspectiva  que tendrá un un desarrollador frente a  la nube de Vmware. Tagged: cloudfoundry, developer, vmware<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=286&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div><a href="http://blog.mccrory.me/">Dave McCrory</a> nos presenta la perspectiva  que tendrá un un desarrollador frente a  la nube de <a href="http://cloudfoundry.com/">Vmware</a>.</div>
<div style="width:425px;"><strong><iframe src='http://www.slideshare.net/slideshow/embed_code/7651158' width='600' height='492'></iframe><br />
</strong></div>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/cloudfoundry/'>cloudfoundry</a>, <a href='http://josebovet.wordpress.com/tag/developer/'>developer</a>, <a href='http://josebovet.wordpress.com/tag/vmware/'>vmware</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/286/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/286/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/286/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=286&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2011/04/24/cloud-foundry-perspectiva-de-un-desarrollador/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>
	</item>
		<item>
		<title>Salto Tandem</title>
		<link>http://josebovet.wordpress.com/2011/04/12/salto-tandem/</link>
		<comments>http://josebovet.wordpress.com/2011/04/12/salto-tandem/#comments</comments>
		<pubDate>Wed, 13 Apr 2011 02:43:36 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Adrenalina]]></category>
		<category><![CDATA[Deporte]]></category>
		<category><![CDATA[Estilo de Vida]]></category>
		<category><![CDATA[Increible]]></category>
		<category><![CDATA[Naturaleza]]></category>
		<category><![CDATA[Paracaidismo]]></category>
		<category><![CDATA[skydive]]></category>
		<category><![CDATA[Tandem]]></category>

		<guid isPermaLink="false">https://josebovet.wordpress.com/2011/04/12/salto-tandem/</guid>
		<description><![CDATA[Salto realizado el 27 de marzo de 2011, en skydiveandes, camino a melipilla, Chile. Tagged: Adrenalina, Deporte, Estilo de Vida, Increible, Naturaleza, Paracaidismo, skydive, Tandem<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=280&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='600' height='368' src='http://www.youtube.com/embed/uLP5PI7ViCQ?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>Salto realizado el 27 de marzo de 2011, en skydiveandes, camino a melipilla, Chile.</p>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/adrenalina/'>Adrenalina</a>, <a href='http://josebovet.wordpress.com/tag/deporte/'>Deporte</a>, <a href='http://josebovet.wordpress.com/tag/estilo-de-vida/'>Estilo de Vida</a>, <a href='http://josebovet.wordpress.com/tag/increible/'>Increible</a>, <a href='http://josebovet.wordpress.com/tag/naturaleza/'>Naturaleza</a>, <a href='http://josebovet.wordpress.com/tag/paracaidismo/'>Paracaidismo</a>, <a href='http://josebovet.wordpress.com/tag/skydive/'>skydive</a>, <a href='http://josebovet.wordpress.com/tag/tandem/'>Tandem</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=280&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2011/04/12/salto-tandem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>
	</item>
		<item>
		<title>Frágil decisión&#8230;</title>
		<link>http://josebovet.wordpress.com/2010/11/15/fragil-decision/</link>
		<comments>http://josebovet.wordpress.com/2010/11/15/fragil-decision/#comments</comments>
		<pubDate>Tue, 16 Nov 2010 02:16:35 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[decisión]]></category>
		<category><![CDATA[elección]]></category>
		<category><![CDATA[indecisión]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/2010/11/23/fragil-decision/</guid>
		<description><![CDATA[&#8220;La peor decisión es la indecisión; que ya de por si, es una elección&#8230;&#8221; Tagged: decisión, elección, indecisión<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=253&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">&#8220;La peor decisión es la indecisión; que ya de por si, es una elección&#8230;&#8221;</p>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/decision/'>decisión</a>, <a href='http://josebovet.wordpress.com/tag/eleccion/'>elección</a>, <a href='http://josebovet.wordpress.com/tag/indecision/'>indecisión</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/253/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/253/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/253/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=253&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/11/15/fragil-decision/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducción a los aspectos básicos de Spring Framework – Segunda Parte</title>
		<link>http://josebovet.wordpress.com/2010/09/28/introduccion-a-los-aspectos-basicos-de-spring-framework-segunda-parte/</link>
		<comments>http://josebovet.wordpress.com/2010/09/28/introduccion-a-los-aspectos-basicos-de-spring-framework-segunda-parte/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 04:46:50 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[afterPropertiesSet]]></category>
		<category><![CDATA[AOP]]></category>
		<category><![CDATA[ApplicationContext]]></category>
		<category><![CDATA[BeanFactory]]></category>
		<category><![CDATA[BeanFactoryPostProcessor]]></category>
		<category><![CDATA[BeanPostProcessors]]></category>
		<category><![CDATA[ClassPathXmlApplicationContext]]></category>
		<category><![CDATA[DisposableBean]]></category>
		<category><![CDATA[FactoryBean]]></category>
		<category><![CDATA[init-method]]></category>
		<category><![CDATA[InitializingBean]]></category>
		<category><![CDATA[IOC]]></category>
		<category><![CDATA[PostConstruct]]></category>
		<category><![CDATA[PreDestroy]]></category>
		<category><![CDATA[PropertyPlaceholderConfigurer]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=110</guid>
		<description><![CDATA[1. El ciclo de vida de un bean. Como anteriormente se pudo ver, Spring, gestiona el ciclo de vida del bean durante toda su ejecución, la cual se basa en tres etapas; ,la inicialización, el uso, y la destrucción. Inicialización: Los servicios de la aplicación son creados, configurados y se pueden asignar recursos del sistema. Uso: En esta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=110&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1. El ciclo de vida de un bean.</p>
<p>Como <a title="Primera Parte" href="http://josebovet.wordpress.com/2010/09/14/aspectos-basicos-de-spring-framework-2/" target="_self">anteriormente</a> se pudo ver, Spring, gestiona el ciclo de vida del bean durante toda su ejecución, la cual se basa en tres etapas; ,la inicialización, el uso, y la destrucción.</p>
<p><a href="http://josebovet.files.wordpress.com/2010/09/ciclovida.png"><img class="aligncenter size-full wp-image-189" title="cicloVida" src="http://josebovet.files.wordpress.com/2010/09/ciclovida.png?w=600" alt=""   /></a></p>
<ol>
<li>Inicialización: Los servicios de la aplicación son creados, configurados y se pueden asignar recursos del sistema.</li>
<li>Uso: En esta esta se procesan las peticiones de los clientes, los comportamientos de la aplicación son llevados acabo en esta etapa, siendo esta la que ocupa la mayor parte del tiempo del ciclo de vida.</li>
<li>Destrucción: En la destrucción se liberan los recursos del sistema mediante el garbage colletion.</li>
</ol>
<p>2. Fases:</p>
<p>2.1 Inicialización:</p>
<p>2.1.1 Carga de la definición de Beans</p>
<p>¿Que pasa cuando se instancia  un ApplicacionContext?</p>
<p><pre class="brush: java;">ApplicationContext context = new ClassPathXmlApplicationContext(“basic-context.xml”);</pre></p>
<p style="padding-left:30px;">La fase de inicialización esta completa cuando se crea el contexto,  en esta etapa se parsean el o los archivos xml de configuración , las definiciones de los beans son cargados en el contexto del <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/BeanFactory.html" target="_blank">BeanFactory</a>, como anteriormente se menciono, estos se crean con  un identificador único, para el contexto, luego, se invocan a clases y métodos especiales que nos permiten modificar las definiciones de los beans que fueron creados anteriormente, esta funcion la realizan los beans del tipo <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanFactoryPostProcessor.html" target="_blank">BeanFactoryPostProcessor</a>, los cual nos permiten manipular, transformar  grupos de definiciones de beans antes que  los objetos sean creados, podemos incluso crear nuestras propias implementaciones de esta interfaz.</p>
<p style="padding-left:30px;">Clases que implementan BeanFactoryPostProcesor en Spring 2.5</p>
<p style="padding-left:30px;"><a title="class in org.springframework.context.weaving" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/context/weaving/AspectJWeavingEnabler.html">AspectJWeavingEnabler</a>, <a title="class in org.springframework.beans.factory.annotation" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/annotation/CustomAutowireConfigurer.html">CustomAutowireConfigurer</a>, <a title="class in org.springframework.beans.factory.config" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/CustomEditorConfigurer.html">CustomEditorConfigurer</a>, <a title="class in org.springframework.beans.factory.config" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/CustomScopeConfigurer.html">CustomScopeConfigurer</a>,</p>
<p style="padding-left:30px;"><a title="class in org.springframework.beans.factory.config" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/PreferencesPlaceholderConfigurer.html">PreferencesPlaceholderConfigurer</a>, <a title="class in org.springframework.beans.factory.config" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/PropertyOverrideConfigurer.html">PropertyOverrideConfigurer</a>, <a title="class in org.springframework.beans.factory.config" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html">PropertyPlaceholderConfigurer</a>,</p>
<p style="padding-left:30px;"><a title="class in org.springframework.beans.factory.config" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/PropertyResourceConfigurer.html">PropertyResourceConfigurer</a>, <a title="class in org.springframework.web.context.support" href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/context/support/ServletContextPropertyPlaceholderConfigurer.html">ServletContextPropertyPlaceholderConfigurer</a></p>
<p style="padding-left:30px;">Un ejmeplo de una clase que implementa <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanFactoryPostProcessor.html" target="_blank">BeanFactoryPostProcessor</a> es la clase <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/PropertyPlaceholderConfigurer.html" target="_self">PropertyPlaceholderConfigurer</a>, que nos permite substituir valores de variables para los beans desde archivos de configuración, ejemplo tenemos un archivo <span style="font-family:Consolas, Monaco, 'Courier New', Courier, monospace;line-height:18px;font-size:12px;white-space:pre;">datasource.properties </span>que contiene la forma clave=valor como la siguiente entrada:</p>
<p><pre class="brush: xml;">
driver=com.mysql.jdbc.Driver
dbname=mysql:mydb</pre></p>
<p>Para cargar las propiedades del archivo, se tiene que  usar la sintaxis  del placeholder  <span style="font-family:Consolas, Monaco, 'Courier New', Courier, monospace;line-height:18px;font-size:12px;white-space:pre;"> </span></p>
<p><pre class="brush: xml;">{...}</pre></p>
<p>como en el siguiente ejemplo, que crea un data source, en donde los &#8230; serán reemplazados por las claves de nuestra configuración, en este caso, driver y dbname.</p>
<p><pre class="brush: xml;">
&lt;bean id=&quot;dataSource&quot; class=&quot;org.springframework.jdbc.datasource.DriverManagerDataSource&quot;&gt;
   &lt;property name=&quot;driverClassName&quot;&gt;&lt;value&gt;${driver}&lt;/value&gt;&lt;/property&gt;
   &lt;property name=&quot;url&quot;&gt;&lt;value&gt;jdbc:${dbname}&lt;/value&gt;&lt;/property&gt;
 &lt;/bean&gt;
</pre></p>
<p>para poder leer y cargar el archivo, spring entre otros, nos proporciona, prefijos para los namespace de configuración que nos facilita el trabajo, uno de estos es el   &lt;context&gt;.</p>
<p><pre class="brush: xml;">
&lt;context:property-placeholder location=“/WEB-INF/datasource.properties” /&gt;
</pre></p>
<p>2.1.2 Inicialización de la instancia del Bean</p>
<ul>
<li>Cada bean, es instanciado en forma temprana, es creado en el orden correcto  con la inyección de sus dependencias.</li>
<li>Después de la inyección de dependencias, los beans pasan a una etapa de post procesamiento, luego de esta etapa, están inicializados y listos para ser usados.</li>
</ul>
<p><a href="http://josebovet.files.wordpress.com/2010/09/lifebean.png"><img class="aligncenter size-full wp-image-225" title="lifeBean" src="http://josebovet.files.wordpress.com/2010/09/lifebean.png?w=600" alt=""   /></a></p>
<p>La etapa del post procesamiento se puede  separar en  dos,  se le puede ordenar inicializar la instancia del bean,o se puede implementar un <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanPostProcessor.html" target="_blank">BeanPostProcessors</a>, que nos permite modificar de una manera personalizada las nuevas instancias de los beans.</p>
<p>Si queremos ejecutar comportamientos específicos o invocar  métodos que necesitemos en la instanciación de  bean,  spring nos proporciona mas de una manera para poder hacerlo; mediante la anotación de la <a href="http://jcp.org/aboutJava/communityprocess/edr/jsr250/index.html" target="_blank">JSR-250</a> @PostConstruct, o a través del init-method, en el cual se especifica el nombre del método inicial que se ejecutará durante la instanciación del bean, esto se realiza en  el archivo de configuración de Spring,  y una tercera opción, es implementando la interfaz <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/InitializingBean.html" target="_blank">InitializingBean</a>.</p>
<p>Vía Anotación:</p>
<p><pre class="brush: java;">
package com.spring.basic.initialization;

import javax.annotation.PostConstruct;

public class SimpleBeanImpl {

	@PostConstruct
	void initMehtod(){
		//metodo a inicial que es ejecutado despues de que
		//la inyeccion de dependencias haya finalizado
	}

}
</pre></p>
<p>* esto es para Spring 2.5 o superior<br />
Para habilitar esta característica, debemos agregar en el archivo de configuración el bean CommonAnnotationBeanPostProcessor o lo recomendado es usar el namespace &lt;context:annotation-config/&gt; , solo bastan con agregarlo tal cual.</p>
<p>Mediante el init-method:</p>
<p>El método debe ser publico, y el bean no debe tener dependencias.</p>
<p><pre class="brush: xml;">
&lt;bean id=&quot;simpleBean&quot; class=&quot;com.spring.basic.initialization.SimpleBeanImpl&quot; init-method=&quot;initMehtod&quot;/&gt;</pre></p>
<p>y mediante la implementación de <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/InitializingBean.html" target="_blank">InitializingBean</a>:</p>
<p>Para versiones inferiores  a spring 2.5, es recomendable usar esta implementación, para versiones superiores o igual a la 2.5,  se recomienda usar <span style="font-family:Consolas, Monaco, 'Courier New', Courier, monospace;line-height:18px;font-size:12px;white-space:pre;">@PostConstruct.</span></p>
<p><pre class="brush: java;">
package ...
import org.springframework.beans.factory.InitializingBean;
public class SimpleBeanImpl implements InitializingBean {

	@Override
	public void afterPropertiesSet() throws Exception {
		// para versiones inferiores a spring 2.5
	}
}
</pre></p>
<p>El método afterPropertiesSet() es invocado automáticamente por Spring.</p>
<p>La interfaz <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanPostProcessor.html" target="_blank">BeanPostProcessor</a> nos permite llevar a cabo configuraciones adicionales, entre sus funciones, nos permite modificar la instancia de un bean en cualquier momento, spring detecta automáticamente estos tipos de beans,  los podemos usar para trabajar con proxies, o para marcar algunas interfaces de modo que la inyección sea requerida, como lo proporciona la anotación @Required, para habilitar esta opción, solo basta agregar &lt;context:annotation-config/&gt; a la configuración.</p>
<p>La interfaz nos provee de dos métodos para poder modificar las instancias, el primero de ellos, es el postProcessAfterInitialization, que nos retorna una nueva instancia después de que se haya hecho la llamada de  inicialización, y el otro método, postProcessBeforeInitialization, quien  lo realiza antes de la llamada de instanciación.</p>
<p>Existe una implementación de <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/config/BeanPostProcessor.html" target="_blank">BeanPostProcessor</a> llamada <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/annotation/RequiredAnnotationBeanPostProcessor.html" target="_self">RequiredAnnotationBeanPostProcessor</a> que nos permite verificar en tiempo de configuración que todas las propriedades marcadas con la anotación @Required estén seteadas correctamente, si no usamos esta verificación, no nos daríamos cuenta hasta usar el bean que su dependencia no fue inyectada.</p>
<p><pre class="brush: java;">
...

	private DataSource dataSource;

	/**
	 * Set del datasource
	 * @param dataSource the data source
	 */
	@Required
	public void setDataSource(DataSource dataSource) {
		this.dataSource = dataSource;
	}
</pre></p>
<div>2.2 La fase de uso.</div>
<div>Los beans son invocados para usarse, estos pueden haber sido creados dentro de un proxy, quien añade comportamiento y lógica que es transparente a la aplicación, estos proxys son creados en la etapa del post procesamiento.</div>
<div>2.3 La fase de destrucción.</div>
<div>En esta etapa se destruye el contexto que contiene los beans, este no puede ser ocupado nuevamente, también se pueden indicar al contexto que beans específicos se deben destruir, se puede realizar mas de una llamada para la destrucción, esto es conveniente para liberar recursos, spring nos provee mas de una manera de poder destruir  los beans, una de ellas es con la anotación @PreDestroy de la <a href="http://jcp.org/aboutJava/communityprocess/edr/jsr250/index.html" target="_blank">JSR-250</a>, o mediante la configuración con la propiedad destroy-method,  y para versiones inferiores a las version 2.5 de spring, implementando la interfaz <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/DisposableBean.html" target="_blank">DisposableBean</a>.</div>
<div>
<p>Vía Anotación:</p>
<p><pre class="brush: java;">
public class SimpleBeanImpl {

	@PreDestroy
	void release(){
                //se llama antes que se realize la destruccion de la instancia del bean
		//sin restriccion del nombre del metodo ni de visibilidad
	}

}
</pre></p>
<p>Mediante el destroy-method:</p>
<p>El método debe ser publico, y el bean no debe tener dependencias, ni argumentos</p>
<p><pre class="brush: xml;">
&lt;bean id=&quot;simpleBean&quot; class=&quot;...SimpleBean&quot; destroy-method=&quot;release&quot;/&gt;
</pre></p>
<p>*el método debe ser publico y no debe tener dependencias.</p>
<p>Mediante la implementación de <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/DisposableBean.html" target="_blank">DisposableBean</a>:</p>
<p><pre class="brush: java;">
public class SimpleBeanDestroy implements DisposableBean {

	@Override
	public void destroy() throws Exception {
		//sping se encarga de llamar a este método en el momento adecuado
	}
}
</pre></p>
</div>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/afterpropertiesset/'>afterPropertiesSet</a>, <a href='http://josebovet.wordpress.com/tag/aop/'>AOP</a>, <a href='http://josebovet.wordpress.com/tag/applicationcontext/'>ApplicationContext</a>, <a href='http://josebovet.wordpress.com/tag/beanfactory/'>BeanFactory</a>, <a href='http://josebovet.wordpress.com/tag/beanfactorypostprocessor/'>BeanFactoryPostProcessor</a>, <a href='http://josebovet.wordpress.com/tag/beanpostprocessors/'>BeanPostProcessors</a>, <a href='http://josebovet.wordpress.com/tag/classpathxmlapplicationcontext/'>ClassPathXmlApplicationContext</a>, <a href='http://josebovet.wordpress.com/tag/disposablebean/'>DisposableBean</a>, <a href='http://josebovet.wordpress.com/tag/factorybean/'>FactoryBean</a>, <a href='http://josebovet.wordpress.com/tag/init-method/'>init-method</a>, <a href='http://josebovet.wordpress.com/tag/initializingbean/'>InitializingBean</a>, <a href='http://josebovet.wordpress.com/tag/ioc/'>IOC</a>, <a href='http://josebovet.wordpress.com/tag/postconstruct/'>PostConstruct</a>, <a href='http://josebovet.wordpress.com/tag/predestroy/'>PreDestroy</a>, <a href='http://josebovet.wordpress.com/tag/propertyplaceholderconfigurer/'>PropertyPlaceholderConfigurer</a>, <a href='http://josebovet.wordpress.com/tag/prototype/'>prototype</a>, <a href='http://josebovet.wordpress.com/tag/scopes/'>scopes</a>, <a href='http://josebovet.wordpress.com/tag/singleton/'>singleton</a>, <a href='http://josebovet.wordpress.com/tag/spring/'>Spring</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/110/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=110&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/09/28/introduccion-a-los-aspectos-basicos-de-spring-framework-segunda-parte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/ciclovida.png" medium="image">
			<media:title type="html">cicloVida</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/lifebean.png" medium="image">
			<media:title type="html">lifeBean</media:title>
		</media:content>
	</item>
		<item>
		<title>Mi biblioteca.</title>
		<link>http://josebovet.wordpress.com/2010/09/27/mi-biblioteca/</link>
		<comments>http://josebovet.wordpress.com/2010/09/27/mi-biblioteca/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 15:03:40 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Libros]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[arquitectura de software]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[in action]]></category>
		<category><![CDATA[patrones diseño]]></category>
		<category><![CDATA[patrones integración]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=195</guid>
		<description><![CDATA[Biblioteca de libros personal<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=195&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;">
<div style="text-align:auto;">Libros de mi biblioteca personal, recomendados para desarrolladores y arquitectos de software.</div>
<div style="text-align:auto;"><a title="List Books" href="http://ws.amazon.com/widgets/q?ServiceVersion=20070822&amp;MarketPlace=US&amp;ID=V20070822%2FUS%2Fjosbovblo-20%2F8001%2Fcb6e0137-1c26-4376-be52-99f61cc83140&amp;Operation=NoScript" target="_blank"><img class="aligncenter size-full wp-image-221" title="books" src="http://josebovet.files.wordpress.com/2010/09/books.png?w=600&#038;h=242" alt="" width="600" height="242" /></a></div>
<div style="text-align:auto;">
<table align="center">
<tbody>
<tr>
<td><a href="http://www.amazon.com/Enterprise-Integration-Patterns-Designing-Deploying/dp/0321200683?tag=josbovblo-20"><img src="http://ecx.images-amazon.com/images/I/51tVn4YqQUL._SL75_.jpg" alt="" /></a></td>
<td><a href="http://www.amazon.com/Enterprise-Integration-Patterns-Designing-Deploying/dp/0321200683?tag=josbovblo-20">Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions</a></td>
</tr>
<tr>
<td><a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612?tag=josbovblo-20"><img src="http://ecx.images-amazon.com/images/I/51Q-RLSadrL._SL75_.jpg" alt="" /></a></td>
<td><a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612?tag=josbovblo-20">Design Patterns: Elements of Reusable Object-Oriented Software</a></td>
</tr>
<tr>
<td><a href="http://www.amazon.com/Spring-Action-Craig-Walls/dp/1933988134?tag=josbovblo-20"><img src="http://ecx.images-amazon.com/images/I/51%2ByW6zN9zL._SL75_.jpg" alt="" /></a></td>
<td><a href="http://www.amazon.com/Spring-Action-Craig-Walls/dp/1933988134?tag=josbovblo-20">Spring in Action</a></td>
</tr>
<tr>
<td><a href="http://www.amazon.com/Grails-Action-Glen-Smith/dp/1933988932?tag=josbovblo-20"><img src="http://ecx.images-amazon.com/images/I/51PpFEJjjCL._SL75_.jpg" alt="" /></a></td>
<td><a href="http://www.amazon.com/Grails-Action-Glen-Smith/dp/1933988932?tag=josbovblo-20">Grails in Action</a></td>
</tr>
<tr>
<td><a href="http://www.amazon.com/Groovy-Action-Dierk-Koenig/dp/1932394842?tag=josbovblo-20"><img src="http://ecx.images-amazon.com/images/I/51rSj5KkphL._SL75_.jpg" alt="" /></a></td>
<td><a href="http://www.amazon.com/Groovy-Action-Dierk-Koenig/dp/1932394842?tag=josbovblo-20">Groovy in Action</a></td>
</tr>
<tr>
<td><a href="http://www.amazon.com/Software-Systems-Architecture-Stakeholders-ebook/dp/B001FBFHDI?tag=josbovblo-20"><img src="http://ecx.images-amazon.com/images/I/5186i6w93UL._SL75_.jpg" alt="" /></a></td>
<td><a href="http://www.amazon.com/Software-Systems-Architecture-Stakeholders-ebook/dp/B001FBFHDI?tag=josbovblo-20">Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspective</a></td>
</tr>
</tbody>
</table>
</div>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/amazon-2/'>amazon</a>, <a href='http://josebovet.wordpress.com/tag/arquitectura-de-software/'>arquitectura de software</a>, <a href='http://josebovet.wordpress.com/tag/book/'>book</a>, <a href='http://josebovet.wordpress.com/tag/clean-code/'>clean code</a>, <a href='http://josebovet.wordpress.com/tag/grails/'>grails</a>, <a href='http://josebovet.wordpress.com/tag/groovy/'>groovy</a>, <a href='http://josebovet.wordpress.com/tag/in-action/'>in action</a>, <a href='http://josebovet.wordpress.com/tag/patrones-diseno/'>patrones diseño</a>, <a href='http://josebovet.wordpress.com/tag/patrones-integracion/'>patrones integración</a>, <a href='http://josebovet.wordpress.com/tag/spring/'>Spring</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=195&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/09/27/mi-biblioteca/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/books.png" medium="image">
			<media:title type="html">books</media:title>
		</media:content>

		<media:content url="http://ecx.images-amazon.com/images/I/51tVn4YqQUL._SL75_.jpg" medium="image" />

		<media:content url="http://ecx.images-amazon.com/images/I/51Q-RLSadrL._SL75_.jpg" medium="image" />

		<media:content url="http://ecx.images-amazon.com/images/I/51%2ByW6zN9zL._SL75_.jpg" medium="image" />

		<media:content url="http://ecx.images-amazon.com/images/I/51PpFEJjjCL._SL75_.jpg" medium="image" />

		<media:content url="http://ecx.images-amazon.com/images/I/51rSj5KkphL._SL75_.jpg" medium="image" />

		<media:content url="http://ecx.images-amazon.com/images/I/5186i6w93UL._SL75_.jpg" medium="image" />
	</item>
		<item>
		<title>Lo nuevo en tecnología, el BOOK</title>
		<link>http://josebovet.wordpress.com/2010/09/22/lo-nuevo-en-tecnologia-el-book/</link>
		<comments>http://josebovet.wordpress.com/2010/09/22/lo-nuevo-en-tecnologia-el-book/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 15:18:40 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[cultural]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Libros]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[Leer esta de moda]]></category>
		<category><![CDATA[libros]]></category>
		<category><![CDATA[Odas elementales]]></category>
		<category><![CDATA[Pablo Neruda]]></category>
		<category><![CDATA[tecnología]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=170</guid>
		<description><![CDATA[Quizás nunca  podremos reemplazar a nuestro querido amigo, que por mucho tiempo nos ha entregado grandes momentos,  leer esta de moda, sumate. El mejor uso al ipad link: http://leerestademoda.com/ Tagged: book, Leer esta de moda, libros, Odas elementales, Pablo Neruda, tecnología<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=170&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Quizás nunca  podremos reemplazar a nuestro querido amigo, que por mucho tiempo nos ha entregado grandes momentos,  leer esta de moda, sumate.</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='600' height='368' src='http://www.youtube.com/embed/iwPj0qgvfIs?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>El mejor uso al ipad</p>
<span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='600' height='368' src='http://www.youtube.com/embed/BK4hrHogsTg?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent' frameborder='0'></iframe></span>
<p>link: <a href="http://leerestademoda.com/">http://leerestademoda.com/</a></p>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/book/'>book</a>, <a href='http://josebovet.wordpress.com/tag/leer-esta-de-moda/'>Leer esta de moda</a>, <a href='http://josebovet.wordpress.com/tag/libros-2/'>libros</a>, <a href='http://josebovet.wordpress.com/tag/odas-elementales/'>Odas elementales</a>, <a href='http://josebovet.wordpress.com/tag/pablo-neruda/'>Pablo Neruda</a>, <a href='http://josebovet.wordpress.com/tag/tecnologia/'>tecnología</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=170&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/09/22/lo-nuevo-en-tecnologia-el-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducción a los aspectos básicos de Spring Framework &#8211; Primera Parte</title>
		<link>http://josebovet.wordpress.com/2010/09/14/aspectos-basicos-de-spring-framework-2/</link>
		<comments>http://josebovet.wordpress.com/2010/09/14/aspectos-basicos-de-spring-framework-2/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 04:42:53 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[J2ee]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[AOP]]></category>
		<category><![CDATA[ApplicationContext]]></category>
		<category><![CDATA[BeanFactory]]></category>
		<category><![CDATA[constructor injection]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[FactoryBean]]></category>
		<category><![CDATA[inyeccion de dependencias]]></category>
		<category><![CDATA[IOC]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scopes]]></category>
		<category><![CDATA[setter injection]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=71</guid>
		<description><![CDATA[1.- Introducción a Spring EL objetivo de Spring - Proveer el soporte  para desarrollar aplicaciones empresariales con java. - Enfocarnos en resolver nuestro problema de dominio. El rol en la arquitectura de aplicaciones empresariales. - El core de Spring nos da la posibilidad de configurar nuestra aplicación de maneras sencillas,así  también el de poder realizar [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=71&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://josebovet.files.wordpress.com/2010/09/spring.png"><img class="size-full wp-image-87 aligncenter" title="spring" src="http://josebovet.files.wordpress.com/2010/09/spring.png?w=600" alt="springframework"   /></a></p>
<p style="text-align:left;">1.- Introducción a Spring</p>
<ul>
<li>EL objetivo de Spring</li>
</ul>
<p style="padding-left:60px;">- Proveer el soporte  para desarrollar aplicaciones empresariales con java.</p>
<p style="padding-left:60px;">- Enfocarnos en resolver nuestro problema de dominio.</p>
<ul>
<li>El rol en la arquitectura de aplicaciones empresariales.</li>
</ul>
<p style="padding-left:60px;">- El core de Spring nos da la posibilidad de configurar nuestra aplicación de maneras sencillas,así  también el de poder realizar una integración con aplicaciones empresariales,  realizar testing y poder manejar el acceso a la data.</p>
<p style="padding-left:60px;">
<p style="padding-left:60px;">- Permite integrar y configurar componentes de manera sencilla; parte de los componentes son  plain java objects.</p>
<p style="padding-left:60px;">- Integrar pool de conexiones  de base de datos, transacciones, seguridad, messaging, acceso remoto, entre otras.</p>
<p style="padding-left:60px;">- Realizar testing,  desacoplando  los objetos desde nuestros ambientes(testing, producción) , realizar test unitarios o de integración.</p>
<p style="padding-left:60px;">- El acceder a la data de una manera mucho mas fácil, spring  nos entrega soporte para la gran parte de las tecnologías de acceso de datos, como lo son JDBC,JPA,JDO,HIBERNATE,IBATIS, ya ahora llamado <a href="http://code.google.com/p/mybatis/wiki/FeedbackTestimonial" target="_blank">MyIbatis</a>, otra característica es que maneja los recursos por nosotros, un ejemplo de esto es que puede adquirir la conexión, participar en la transacción, manejar las exceptions, procesar resultados, etc; nos provee de helpers como lo es <a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html#jdbc-JdbcTemplate" target="_blank">JdbcTemplate</a>.</p>
<p style="padding-left:60px;">- Soporte para el desarrollo de aplicaciones Web, permite la integración con JSF, Struts, Velocity, FreeMaker y algunos otros, nos permite trabajar con el patrón de diseño <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a>, rendear las vistas,validación de formularios, manejo de estados con web flow,  acciones de usuarios, etc, así también, aplicar una capa de seguridad con <a href="http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity.html" target="_blank">spring Security</a>.</p>
<p style="padding-left:60px;">- Soporte en el desarrollo de aplicaciones empresariales,  desarrollando webservices,  asegurando servicios con accesos de control, planificando jobs y procesos, integrando servicios de mensajería.</p>
<p style="padding-left:60px;">
<ul>
<li>La base de spring se puede definir mediante el triangulo de Spring<a href="http://josebovet.files.wordpress.com/2010/09/spring-triangle.png"><img class="alignleft size-full wp-image-100" title="spring-triangle" src="http://josebovet.files.wordpress.com/2010/09/spring-triangle.png?w=600" alt=""   /></a></li>
</ul>
<p style="padding-left:60px;">- Inyección de dependencia</p>
<p style="padding-left:60px;">- Programacion orientada a aspectos</p>
<p style="padding-left:60px;">-y Abstracción de servicios empresariales.</p>
<p style="padding-left:60px;">
<p style="padding-left:60px;">
<p style="padding-left:60px;">
<p>2 .- Beans y contenerdores:</p>
<ul>
<li>En Spring un bean es un objeto que vive y que es manipulado por el contenedor, no confundir con un <a href="http://download.oracle.com/javase/tutorial/javabeans/whatis/index.html" target="_blank">javabean</a>.</li>
<li>Spring gestiona todo el ciclo de vida de la aplicación, todos los beans son inicializados antes que se utilicen.</li>
<li>Los beans siempre son creados en orden correcto, Spring se encarga de resolver la dependencia de cada uno de ellos.</li>
<li>Cada bean posee un identificador único</li>
<li>Encapsula las implementaciones dado  el despliegue de la aplicación, oculta los detalles de la implementación.</li>
</ul>
<p>2.1 &#8211; Los beans.</p>
<p>Un bean es un objeto, y como tal puede ser bastante simple,  como el siguiente:</p>
<p style="text-align:center;"><a href="http://josebovet.files.wordpress.com/2010/09/simplebean.png"><img class="size-full wp-image-117 aligncenter" title="simplebean" src="http://josebovet.files.wordpress.com/2010/09/simplebean.png?w=600" alt=""   /></a></p>
<p style="padding-left:30px;">Con sus atributos, getters y setters, tal y cual, es un objeto plano en java, para pasarlo a un bean de Spring, tenemos que ponerlo en un contenedor de beans, que no es mas que una definición en un archivo xml.</p>
<p style="padding-left:30px;"><a href="http://josebovet.files.wordpress.com/2010/09/simplebean-context.png"><img class="aligncenter size-full wp-image-119" title="SimpleBean-context" src="http://josebovet.files.wordpress.com/2010/09/simplebean-context.png?w=600" alt=""   /></a></p>
<p style="padding-left:30px;">Esta es una clase que no contiene dependencias, si quisiéramos instanciar la clase vía reflection, bastaría con hacer:</p>
<p><pre class="brush: java;">SimpleBean simpleBean = new SimpleBean();</pre></p>
<p style="padding-left:30px;">Pero Spring nos provee de una interfaz para proporcionar la configuración de una aplicación, esta es el ApplicationContext.</p>
<p><pre class="brush: java;">
ApplicationContext context = new ClassPathXmlApplicationContext(“basic-context.xml”);
SimpleBean simpleBean = (SimpleBean) context.getBean(&quot;simpleBean&quot;,SimpleBean.class);
</pre></p>
<p style="padding-left:30px;">Ahora Spring es quien contiene y maneja todo el ciclo de vida del bean llamado &#8220;simpleBean&#8221; que definimos mas arriba.</p>
<p>2.2 Inyección de dependencias.</p>
<p>Spring nos permite el poder inyectar dependencias a nuestros beans vía setter, o constructor.</p>
<p>2.2.1 Inyección de dependencia por constructor.</p>
<p><a href="http://josebovet.files.wordpress.com/2010/09/constijection.png"><img class="aligncenter size-full wp-image-120" title="constIjection" src="http://josebovet.files.wordpress.com/2010/09/constijection.png?w=600" alt=""   /></a></p>
<p>Es equivalente a:</p>
<p><pre class="brush: java;">SimpleBean sb = new SimpleBean(787545, &quot;valor del tipo string&quot;, new HashMap...);</pre></p>
<p>Beneficios de la inyección por constructor:</p>
<ol>
<li>Cumplir con las dependencias obligatorias.</li>
<li>Proveer de inmutabilidad</li>
<li>Programar de una forma consistente, creación e inyección en una sola linea de código.</li>
</ol>
<p>2.2.2 Inyección de dependencia por Setter.</p>
<p><a href="http://josebovet.files.wordpress.com/2010/09/setterijection.png"><img class="aligncenter size-full wp-image-121" title="SetterIjection" src="http://josebovet.files.wordpress.com/2010/09/setterijection.png?w=600" alt=""   /></a></p>
<p>Es equivalente a:</p>
<p><pre class="brush: java;">
SimpleBean sb = new SimpleBean();
sb.setId(787545);
sb.setName(&quot;valor del tipo string&quot;);
sb.setMaps(new HashMap()...);
</pre></p>
<p>Beneficios de la inyección por Setter:</p>
<ol>
<li>Permitir dependencias por defecto u opcionales.</li>
<li>Tener nombres descriptivos.</li>
<li>Seguir la convención JavaBeanTM</li>
<li>Se hereda de forma automática.</li>
</ol>
<p>También se pueden combinar.</p>
<p><a href="http://josebovet.files.wordpress.com/2010/09/injectioncombined.png"></a><a href="http://josebovet.files.wordpress.com/2010/09/injectioncombined1.png"><img class="aligncenter size-full wp-image-124" title="injectionCombined" src="http://josebovet.files.wordpress.com/2010/09/injectioncombined1.png?w=600" alt=""   /></a></p>
<p>Los puristas prefieren uno sobre otro,¿Cual usar?,  tu elijes, se consistente&#8230;</p>
<p>2.2.3 Dependencias y configuración en detalle ver <a href="http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-properties-detailed" target="_blank">aqui</a></p>
<p>En resumen, dentro de los beneficios de las inyecciones de dependencia podemos mencionar.</p>
<ul>
<li>Al objeto se le entrega lo necesario para trabajar, simplifica el código, permite la reutilización, permite resolver la dependencias entre los componentes.</li>
<li>Nos permite trabajar con interfaces, para ocultar los detalles de la implementación</li>
<li>Promueve las pruebas de manera aislada o de todos los componentes juntos.</li>
<li>Maneja el ciclo de vida del objeto.</li>
</ul>
<div>
<p>3.- El Factory Bean</p>
<div id="_mcePaste">El <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/FactoryBean.html" target="_blank">factoryBean</a> es una interfaz que es implementada por los objetos que usara el <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/BeanFactory.html" target="_blank">BeanFactory</a>,  si un objeto la implementa, este se utilizará como  una fabrica de objeto, esta interfaz soporta  scopes singletons y prototypes, con la opción de crearse en forma temprana o tardía(lazily).</div>
<div>
<div>Métodos de FactoryBean:</div>
</div>
<table>
<tbody>
<tr>
<td>getObject()</td>
<td>retorna una instancia del objeto creado.</td>
</tr>
<tr>
<td>getObjectType()</td>
<td>retorna el tipo de objeto que se creo, o null si no se conoce.</td>
</tr>
<tr>
<td>isSingleton()</td>
<td>si el objeto es manejado como un singleton.</td>
</tr>
</tbody>
</table>
<p>A tener en cuenta:</p>
<div>
<ul>
<li>Spring autodetecta cualquier implementación del <a href="http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/FactoryBean.html" target="_blank">factoryBean</a> y retorna el objeto creado por<br />
el metodo <code>getObject()</code></li>
<li>Nos permite encapsular la creación del objeto</li>
<li>Spring nos permitirá instanciar el objeto como un bean Singleton, o Prototype.</li>
</ul>
</div>
<p>3.1 Implementando FactoryBean:</p>
<p>Objeto que implementa FactoryBean</p>
<p><pre class="brush: java;">
package com.spring.basic.factory;

import org.springframework.beans.factory.FactoryBean;

/**
 * Clase de muestra de como funciona el facoryBean de spring
 * &lt;ul&gt;
 * 	&lt;li&gt;Spring autodetecta  cualquier implementacion del {@link FactoryBean } y retorna el objeto creado por
 * el metodo &lt;code&gt;getObject()&lt;/code&gt;&lt;/li&gt;
 * &lt;li&gt;Nos permite encapsular la creacion del objeto&lt;/li&gt;
 * &lt;li&gt;Spring nos permitira dejarlo como un bean Singleton&lt;/li&gt;
 * &lt;/ul&gt;
 * @author jbovet
 */
public class ObjectFactory implements FactoryBean {

	/***
	 * Objeto que sera devuelto
	 */
	private MockObject mockObject;

	private Integer idMock;
	private String nameMock;
	private boolean isSingleton = Boolean.TRUE;

	/***
	 * retorna la instancia del objeto MockObject
	 */
	public Object getObject() throws Exception {
		if (mockObject ==null) {
			initMockObject();
		}
		return mockObject;
	}

	/***
	 * crea la instancia del objeto
	 */
	private void initMockObject() {
		//se crea el objeto mediante constructor
		mockObject = new MockObject(nameMock,idMock);
	}

	/***
	 * Obtiene la clase del objeto
	 */
	public Class&lt;MockObject&gt; getObjectType() {
		return MockObject.class;
	}

	/**
	 * el factorybean se registra como singleton
	 * @see org.springframework.beans.factory.FactoryBean#isSingleton()
	 */
	public boolean isSingleton() {
		return isSingleton;
	}

	public void setIdMock(Integer idMock) {
		this.idMock = idMock;
	}
	public void setNameMock(String nameMock) {
		this.nameMock = nameMock;
	}
}

</pre></p>
<p>Configuración del contexto de Spring, para la implementación de un objeto que implementa el FactoryBean.</p>
<p><pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
	xmlns:util=&quot;http://www.springframework.org/schema/util&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd&quot;&gt;

	&lt;bean id=&quot;mockObjectFactory&quot; class=&quot;com.spring.basic.factory.ObjectFactory&quot;&gt;
		&lt;property name=&quot;idMock&quot; value=&quot;123&quot;/&gt;
		&lt;property name=&quot;nameMock&quot; value=&quot;mockito&quot;/&gt;
	&lt;/bean&gt;
        &lt;!--bean que usa el objeto mock --&gt;
	&lt;bean id=&quot;simpleBean&quot;&gt;
	    &lt;property name=&quot;mockObject&quot; ref=&quot;mockObjectFactory&quot;/&gt;
	&lt;/bean&gt;
&lt;/beans&gt;

</pre></p>
<p>Test para obtener el objeto MockObject</p>
<p><pre class="brush: java;">
package com.spring.basic.factory;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestFactory {

	public static void main(String[] args) throws Exception {
		ApplicationContext context = new ClassPathXmlApplicationContext(&quot;classpath:com/spring/basic/factory/factory-context.xml&quot;);
		MockObject mockObject = (MockObject) context.getBean(&quot;mockObjectFactory&quot;);
		System.out.println(mockObject.toString());
		//SimpleBean sb = (SimpleBean) context.getBean(&quot;simpleBean&quot;, SimpleBean.class);
		//sb.doSomething();
	}
}
</pre></p>
</div>
<p>El uso de los FactoryBeans en Spring:</p>
<ul>
<li>JndiObjectFactoryBean: para poder trabajar con objetos JNDI</li>
<li>Nos permite crear proxies remotos</li>
<li>Para configurar el acceso a la data.(ibatis, hibernate,jpa,etc)</li>
</ul>
<p>4.- Creando un Spring Application Context</p>
<p>Un Spring Application Context puede ser ejecutado en casi cualquier ambiente, incluyendo en sistema de testing como Junit, dentro de una aplicacion web, con EJB&#8217;s, o e una aplicación  standalone de java, podemos cargar el contexto de partes, como lo es el classpath, desde el sistema de archivos, o como un recurso dentro de una aplicion web, para esto, spring nos proporciona 3 implementaciones para cargar nuestros beans.</p>
<table>
<tbody>
<tr>
<td>Tipo</td>
<td>Ejemplo</td>
</tr>
<tr>
<td>ClassPathXmlApplicationContext</td>
<td>$CLASSPATH/org/spring/basic/application-config.xml</td>
</tr>
<tr>
<td>FileSystemXmlApplicationContext</td>
<td>\tmp\context\application-config.xml</td>
</tr>
<tr>
<td>XmlWebApplicationContext</td>
<td>$JBOSS_HOME/webapp/webappName/WEB-INF/application-config.xml</td>
</tr>
</tbody>
</table>
<p>4.1 Usando prefijos.</p>
<p>classpath:</p>
<p><pre class="brush: java;">new ClassPathXmlApplicationContext(“classpath:org/spring/basic/application-config.xml”);</pre></p>
<p>file:</p>
<p><pre class="brush: java;">new FileSystemXmlApplicationContext(“file:\tmp\context\application-config.xml”);</pre></p>
<p>http:</p>
<p><pre class="brush: java;">ctx.getResource(&quot;http://myserver/logo.png);</pre></p>
<p style="padding-left:30px;">
<p style="padding-left:30px;">
<p>Los prefijos los podemos utilizar en cualquier lugar donde spring necesite cargar algún recurso, no solamente como  argumento en el constructor del applicationContext.</p>
<p>4.2  Creando mutiples Application Context.</p>
<ul>
<li>Un contexto puede ser configurado desde múltiples archivos, permite separar la definición de los beans en grupos lógicos.</li>
<li>Una buena practica es separar los beans de la aplicación de los  de infraestructura, ya que estos últimos pueden cambiar dependiendo del entorno.</li>
</ul>
<p>Ejemplo de como cargar los beans de producción con mysql</p>
<p><pre class="brush: java;">ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {
“app-config.xml”,
“mysql-infrastructure-config.xml”
});</pre></p>
<p>Ejemplo de como cargar los beans de desarrollo con mysql en test</p>
<p><pre class="brush: java;">ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {
“app-config.xml”,
“mysql-test-infrastructure-config.xml”
});</pre></p>
<p>En la <a title="Segunda parte" href="http://josebovet.wordpress.com/2010/09/28/introduccion-a-los-aspectos-basicos-de-spring-framework-segunda-parte/" target="_self">segunda parte</a>, veremos mas en profundidad el ciclo de vida de un bean..</p>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/aop/'>AOP</a>, <a href='http://josebovet.wordpress.com/tag/applicationcontext/'>ApplicationContext</a>, <a href='http://josebovet.wordpress.com/tag/beanfactory/'>BeanFactory</a>, <a href='http://josebovet.wordpress.com/tag/constructor-injection/'>constructor injection</a>, <a href='http://josebovet.wordpress.com/tag/context/'>context</a>, <a href='http://josebovet.wordpress.com/tag/factorybean/'>FactoryBean</a>, <a href='http://josebovet.wordpress.com/tag/inyeccion-de-dependencias/'>inyeccion de dependencias</a>, <a href='http://josebovet.wordpress.com/tag/ioc/'>IOC</a>, <a href='http://josebovet.wordpress.com/tag/prototype/'>prototype</a>, <a href='http://josebovet.wordpress.com/tag/scopes/'>scopes</a>, <a href='http://josebovet.wordpress.com/tag/setter-injection/'>setter injection</a>, <a href='http://josebovet.wordpress.com/tag/singleton/'>singleton</a>, <a href='http://josebovet.wordpress.com/tag/spring/'>Spring</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=71&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/09/14/aspectos-basicos-de-spring-framework-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/spring.png" medium="image">
			<media:title type="html">spring</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/spring-triangle.png" medium="image">
			<media:title type="html">spring-triangle</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/simplebean.png" medium="image">
			<media:title type="html">simplebean</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/simplebean-context.png" medium="image">
			<media:title type="html">SimpleBean-context</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/constijection.png" medium="image">
			<media:title type="html">constIjection</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/setterijection.png" medium="image">
			<media:title type="html">SetterIjection</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/09/injectioncombined1.png" medium="image">
			<media:title type="html">injectionCombined</media:title>
		</media:content>
	</item>
		<item>
		<title>spring y apache servicemix embebido.</title>
		<link>http://josebovet.wordpress.com/2010/04/13/spring-y-apache-servicemix-embebido/</link>
		<comments>http://josebovet.wordpress.com/2010/04/13/spring-y-apache-servicemix-embebido/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 19:20:26 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[ServiceMix]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[apache servicemix]]></category>
		<category><![CDATA[SpringJBIContainer]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=15</guid>
		<description><![CDATA[Uno de los inconvenientes que encontré al momento de empezar a trabajar con apache servicemix, fue el problemas con los schemas,  tags, y los beans; no se  si es buena practica a estar acostumbrado al editor que trae el STS ,pero me facilita mucho el trabajo al configurar los beans de spring, no fue así cuando intente trabajar con los tags de servicemix, ya que de partida me daba errores al encontrar los schemas en el sitio de apache,  fue todo un caos... el tener que aprenderme la estructura que necesita el archivo de servicemix, mmm no tuve mucho tiempo, así que el objetivo fue pasar aquella configuración, a  una mas natural de spring, para esto tome el siguiente ejemplo desde el sitio de apache servicemix,  a grandes rasgos, la idea es tomar un archivo desde la carpeta inbox, moverlo y cambiarle el nombre, siempre y cuando se un archivo con formato xml.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=15&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Después de un largo tiempo de no publicar, he decidido compartir este articulo sobre como integrar <a href="http://springframework.org" target="_blank">Spring</a> con <a href="http://servicemix.apache.org" target="_blank">Apache ServiceMix</a>,no voy a ahondar mucho sobre el <a href="http://es.wikipedia.org/wiki/Framework" target="_blank">framework</a> y el <a href="http://es.wikipedia.org/wiki/Enterprise_service_bus" target="_blank">ESB</a>, <a href="http://www.pacorey.net/Googleando.htm" target="_blank">googleando</a> por la red,no encontré mucha información acerca de como integrar estas dos tecnologías, mas que en la mismo sitio de serviceMix, donde existe un <a href="http://servicemix.apache.org/spring-support.html" target="_blank">articulo</a> que nos indica por que usar Spring y como podemos configurar nuestro propio fichero xml para nuestros componentes.</p>
<p>Presentación ServiceMix</p>
<div id="__ss_5040804" style="width:425px;"><strong><iframe src='http://www.slideshare.net/slideshow/embed_code/5040804' width='600' height='492'></iframe><br />
</strong></p>
<div style="padding:5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/josebovet">Jose Bovet</a>.</div>
</div>
<p>¿Por  que el articulo?</p>
<p>Uno de los inconvenientes que encontré al momento de empezar a trabajar con apache servicemix, fue el problema con los schemas,  tags, y beans; no se  si es buena practica estar acostumbrado al editor que trae el <a href="http://www.springsource.com/products/sts">STS</a> ,pero me facilita mucho el trabajo al configurar los beans de spring, no fue así cuando intente trabajar con los tags de servicemix, ya que de partida me daba errores al encontrar los schemas en el sitio de apache,  fue todo un caos&#8230; el tener que aprenderme la estructura que necesita el archivo de servicemix, mmm no tuve mucho tiempo, así que el objetivo fue pasar aquella configuración, a  una mas natural de spring, para esto tome el siguiente <a href="http://servicemix.apache.org/file-binding.html" target="_blank">ejemplo</a> desde el sitio de apache servicemix,  a grandes rasgos, la idea es tomar un archivo desde la carpeta inbox, moverlo y cambiarle el nombre, siempre y cuando se un archivo con formato xml.</p>
<p>¿Como funciona?</p>
<p><a href="http://josebovet.files.wordpress.com/2010/04/filebindingexample.jpg"><img class="aligncenter size-full wp-image-46" title="filebindingexample" src="http://josebovet.files.wordpress.com/2010/04/filebindingexample.jpg?w=600" alt=""   /></a></p>
<p>1.  El componente filePoller busca un archivo en el directorio inbox cada 1000 ms.<br />
2.  Una vez que el archivo es encontrado en el directorio, el filePoller consigue un thread desde el manejador de tareas. El thread    se utiliza para procesar el archivo.<br />
3. El filePoller crea un mensaje normalizado que contiene el archivo que sera transmitido. Se envía el mensaje normalizado al NMR.<br />
El NMR routea el mensaje hasa el componente filesender.<br />
4. El fileSender transforma el mensaje normalizado de nuevo a un archivo y lo coloca en el directorio outbox.</p>
<p>Lo primero que voy a hacer es crear un proyecto <a href="http://maven.apache.org/" target="_blank">maven</a>, para ello me voy al <a href="http://www.springsource.com/products/sts" target="_blank">STS</a>(Spring Tool Suite).</p>
<p><code>File-&gt;New-&gt;Other-&gt;Maven Project</code><br />
<a href="http://josebovet.files.wordpress.com/2010/04/maven.png"><img class="aligncenter size-full wp-image-34" title="maven" src="http://josebovet.files.wordpress.com/2010/04/maven.png?w=600" alt=""   /></a></p>
<p>Le damos next y nos  pedira el nombre y la ubicación del proyecto,  le damos siguiente donde seleccionaremos que tipo de archetype de maven queremos; para este caso utilizaremos el <code>servicemix-embedded-simple<br />
</code> <a href="http://josebovet.files.wordpress.com/2010/04/maven3.png"><img class="aligncenter size-full wp-image-40" title="maven3" src="http://josebovet.files.wordpress.com/2010/04/maven3.png?w=600" alt=""   /></a></p>
<p>Luego nos preguntara el groupId y el artifactId, lo completamos y damos finarlizar.Nos creara un proyecto con la siguiente estructura.</p>
<p><a href="http://josebovet.files.wordpress.com/2010/04/sts1.png"><img class="aligncenter size-full wp-image-43" title="sts1" src="http://josebovet.files.wordpress.com/2010/04/sts1.png?w=600" alt=""   /></a></p>
<p>Una clase Main y un archivo llamado servicemix.xml como lo muestra la figura anterior.</p>
<p>Ahora crearemos dos carpetas en la raiz del proyecto, una llamada inbox, y outbox, también un <code>Spring Bean Configuration File</code> dentro de la carpeta resources, lo llamare <code>context-jbi.xml </code> y sera donde alojare la configuración de los beans.</p>
<p>Servicemix nos provee la opción y el soporte de Spring, para lo cual, dispone de una clase llamada <a href="http://servicemix.apache.org/maven/servicemix-core/apidocs/org/apache/servicemix/jbi/container/SpringJBIContainer.html" target="_blank">SpringJBIContainer</a> , este  contenedor JBI, añade algunos métodos de ayuda para facilitar la configuración a través de archivos XML  de spring, teniendo en cuenta esto, vamos a crear un bean de esa clase.</p>
<p><pre class="brush: xml;">
&lt;bean id=&quot;jbi&quot; class=&quot;org.apache.servicemix.jbi.container.SpringJBIContainer&quot;&gt;
   &lt;property name=&quot;embedded&quot; value=&quot;true&quot; /&gt;
   &lt;property name=&quot;activationSpecs&quot;&gt;
    &lt;list&gt;
      &lt;ref bean=&quot;activationSpecFileSender&quot;/&gt;
      &lt;ref bean=&quot;activationSpecFilePoller&quot;/&gt;
    &lt;/list&gt;
   &lt;/property&gt;
 &lt;/bean&gt;
</pre></p>
<p>Establecemos que el modo sera embebido, y le pasamos como referencia los <code>activationSpecs</code></p>
<p><pre class="brush: xml;">
	&lt;bean id=&quot;activationSpecFileSender&quot; class=&quot;org.apache.servicemix.jbi.container.ActivationSpec&quot;&gt;
		&lt;property name=&quot;componentName&quot; value=&quot;fileSender&quot; /&gt;
		&lt;property name=&quot;service&quot; ref=&quot;fileSenderService&quot; /&gt;
		&lt;property name=&quot;component&quot;&gt;
			&lt;bean class=&quot;org.apache.servicemix.components.file.FileWriter&quot;&gt;
				&lt;property name=&quot;directory&quot; value=&quot;${OUTBOX}&quot; /&gt;
				&lt;property name=&quot;marshaler&quot;&gt;
					&lt;bean class=&quot;org.apache.servicemix.components.util.DefaultFileMarshaler&quot;&gt;
						&lt;property name=&quot;fileName&quot;&gt;
							&lt;bean
								class=&quot;org.apache.servicemix.expression.JaxenStringXPathExpression&quot;&gt;
								&lt;constructor-arg value=&quot;concat('sample_', /sample/@id, '.xml')&quot; /&gt;
							&lt;/bean&gt;
						&lt;/property&gt;
					&lt;/bean&gt;
				&lt;/property&gt;
			&lt;/bean&gt;
		&lt;/property&gt;
	&lt;/bean&gt;
</pre></p>
<p>Necesitamos crear el componente que buscara el archivo en el directorio inbox, para esto seteamos el nombre del componente, el servicio que hace referencia  al bean del servicio llamado <code>fileSenderService</code>, y creamos el componente que sera utilizado, en este caso un<code>FileWriter</code>.</p>
<p>Ahora crearemos el componente que deja el archivo en la carpeta outbox,steamos el nombre del componente, el servicio, el componente <code>FilePoller</code>, y el <code>destinationService</code>, el cual nos dice donde se routeara , en este caso al <code>fileSenderService</code></p>
<p><pre class="brush: xml;">
	&lt;bean id=&quot;activationSpecFilePoller&quot; class=&quot;org.apache.servicemix.jbi.container.ActivationSpec&quot;&gt;
		&lt;property name=&quot;componentName&quot; value=&quot;filePoller&quot; /&gt;
		&lt;property name=&quot;destinationService&quot; ref=&quot;fileSenderService&quot; /&gt;
		&lt;property name=&quot;service&quot; ref=&quot;filePollerService&quot; /&gt;
		&lt;property name=&quot;component&quot;&gt;
			&lt;bean class=&quot;org.apache.servicemix.components.file.FilePoller&quot;&gt;
				&lt;property name=&quot;file&quot; value=&quot;${INBOX}&quot; /&gt;
				&lt;property name=&quot;period&quot; value=&quot;1000&quot; /&gt;
			&lt;/bean&gt;
		&lt;/property&gt;
	&lt;/bean&gt;
</pre></p>
<p>Aquí tenemos los service beans de la clase <code>QName</code>, que en este caso no necesitamos pasarle la definición del xml.</p>
<p><pre class="brush: xml;">
   &lt;bean id=&quot;fileSenderService&quot; class=&quot;javax.xml.namespace.QName&quot;&gt;
       &lt;constructor-arg value=&quot;fileSender&quot;/&gt;
   &lt;/bean&gt;

   &lt;bean id=&quot;filePollerService&quot; class=&quot;javax.xml.namespace.QName&quot;&gt;
       &lt;constructor-arg value=&quot;filePoller&quot;/&gt;
   &lt;/bean&gt;
</pre></p>
<p>Y para terminar un <code>BeanFactoryPostProcessors</code>, el <code>propertyConfigurer</code> para setear las propiedades en las variables ${INBOX} ${OUTBOX}</p>
<p><pre class="brush: xml;">
	&lt;bean id=&quot;propertyConfigurer&quot; class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&gt;
		&lt;property name=&quot;location&quot; value=&quot;classpath:rutas.properties&quot; /&gt;
	&lt;/bean&gt;
</pre></p>
<p>Y el rutas.properties</p>
<p><pre class="brush: xml;">
INBOX=/media/A880A33480A307C0/WS_INV/ServiceMixEmbebbed/inbox
OUTBOX=/media/A880A33480A307C0/WS_INV/ServiceMixEmbebbed/outbox
</pre></p>
<p>Ahora vamos a la clase Main, donde tendremos que cambiar el archivo a leer en el <code>ClassPathXmlApplicationContext</code> ,por defecto fue creado con <code>servicemix.xml</code> lo cambiamos y leemos el <code>context-jbi.xml</code> quedando la clase de la siguiente manera.</p>
<p><pre class="brush: java;">
import org.apache.servicemix.jbi.container.SpringJBIContainer;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// This is a very simple example of how you might embed ServiceMix
		try {
			final ApplicationContext context = new ClassPathXmlApplicationContext(&quot;context-jbi.xml&quot;);
			SpringJBIContainer container = (SpringJBIContainer) context.getBean(&quot;jbi&quot;);

            container.onShutDown(new Runnable() {
                public void run() {
                    if (context instanceof DisposableBean) {
                        try {
                            ((DisposableBean) context).destroy();
                        } catch (Exception e) {
                            System.out.println(&quot;Caught: &quot; + e);
                            e.printStackTrace();
                        }
                    }
                }
            });
		} catch (Exception e) {
			System.out.println(&quot;Caught: &quot; + e);
			e.printStackTrace();
		}

	}

}
</pre></p>
<p>Como vemos, ya ha quedado nuestro bean, solo falta agregar a las dependencias de maven el <code>servicemix-components</code></p>
<p><a href="http://josebovet.files.wordpress.com/2010/04/maven5.png"><img class="aligncenter size-full wp-image-54" title="maven5" src="http://josebovet.files.wordpress.com/2010/04/maven5.png?w=600" alt=""   /></a></p>
<p>Dejas un archivo xml en la carpeta inbox, y corres la clase main, eso es todo&#8230; como ves pasamos de la engorrosa configuracion de service mix del <a href="http://servicemix.apache.org/file-binding.html">ejemplo</a></p>
<p><pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the &quot;License&quot;); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

--&gt;
&lt;beans xmlns:sm=&quot;http://servicemix.apache.org/config/1.0&quot;
	     xmlns:foo=&quot;http://servicemix.org/demo/&quot;&gt;

  &lt;bean id=&quot;jndi&quot; class=&quot;org.apache.xbean.spring.jndi.SpringInitialContextFactory&quot;
        factory-method=&quot;makeInitialContext&quot; singleton=&quot;true&quot; /&gt;

	&lt;!-- the JBI container --&gt;
	&lt;sm:container id=&quot;jbi&quot; useMBeanServer=&quot;true&quot; createMBeanServer=&quot;true&quot;&gt;

		&lt;sm:activationSpecs&gt;

			&lt;!-- Write files to the outbox directory --&gt;
			&lt;sm:activationSpec componentName=&quot;fileSender&quot;
				service=&quot;foo:fileSender&quot;&gt;
				&lt;sm:component&gt;
					&lt;bean class=&quot;org.apache.servicemix.components.file.FileWriter&quot;&gt;
						&lt;property name=&quot;directory&quot; value=&quot;outbox&quot; /&gt;
						&lt;property name=&quot;marshaler&quot;&gt;
							&lt;bean
								class=&quot;org.apache.servicemix.components.util.DefaultFileMarshaler&quot;&gt;
								&lt;property name=&quot;fileName&quot;&gt;
									&lt;bean
										class=&quot;org.apache.servicemix.expression.JaxenStringXPathExpression&quot;&gt;
										&lt;constructor-arg
											value=&quot;concat('sample_', /sample/@id, '.xml')&quot; /&gt;
									&lt;/bean&gt;
								&lt;/property&gt;
							&lt;/bean&gt;
						&lt;/property&gt;
					&lt;/bean&gt;
				&lt;/sm:component&gt;
			&lt;/sm:activationSpec&gt;

			&lt;!-- Look for files in the inbox directory --&gt;
			&lt;sm:activationSpec componentName=&quot;filePoller&quot;
				destinationService=&quot;foo:fileSender&quot; service=&quot;foo:filePoller&quot;&gt;
				&lt;sm:component&gt;
					&lt;bean class=&quot;org.apache.servicemix.components.file.FilePoller&quot;&gt;
						&lt;property name=&quot;file&quot; value=&quot;inbox&quot; /&gt;
						&lt;property name=&quot;period&quot; value=&quot;1000&quot; /&gt;
					&lt;/bean&gt;
				&lt;/sm:component&gt;
			&lt;/sm:activationSpec&gt;
		&lt;/sm:activationSpecs&gt;
	&lt;/sm:container&gt;

&lt;/beans&gt;
</pre></p>
<p>a algo mas natural de Spring</p>
<p><pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
	xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:util=&quot;http://www.springframework.org/schema/util&quot;
	xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd&quot;&gt;

	&lt;bean id=&quot;jbi&quot; class=&quot;org.apache.servicemix.jbi.container.SpringJBIContainer&quot;&gt;
		&lt;property name=&quot;embedded&quot; value=&quot;true&quot; /&gt;
		&lt;property name=&quot;activationSpecs&quot;&gt;
			&lt;list&gt;
				&lt;ref bean=&quot;activationSpecFileSender&quot;/&gt;
				&lt;ref bean=&quot;activationSpecFilePoller&quot;/&gt;
			&lt;/list&gt;
		&lt;/property&gt;
	&lt;/bean&gt;

	&lt;bean id=&quot;activationSpecFileSender&quot; class=&quot;org.apache.servicemix.jbi.container.ActivationSpec&quot;&gt;
		&lt;property name=&quot;componentName&quot; value=&quot;fileSender&quot; /&gt;
		&lt;property name=&quot;service&quot; ref=&quot;fileSenderService&quot; /&gt;
		&lt;property name=&quot;component&quot;&gt;
			&lt;bean class=&quot;org.apache.servicemix.components.file.FileWriter&quot;&gt;
				&lt;property name=&quot;directory&quot; value=&quot;${OUTBOX}&quot; /&gt;
				&lt;property name=&quot;marshaler&quot;&gt;
					&lt;bean class=&quot;org.apache.servicemix.components.util.DefaultFileMarshaler&quot;&gt;
						&lt;property name=&quot;fileName&quot;&gt;
							&lt;bean
								class=&quot;org.apache.servicemix.expression.JaxenStringXPathExpression&quot;&gt;
								&lt;constructor-arg value=&quot;concat('sample_', /sample/@id, '.xml')&quot; /&gt;
							&lt;/bean&gt;
						&lt;/property&gt;
					&lt;/bean&gt;
				&lt;/property&gt;
			&lt;/bean&gt;
		&lt;/property&gt;
	&lt;/bean&gt;

	&lt;bean id=&quot;activationSpecFilePoller&quot; class=&quot;org.apache.servicemix.jbi.container.ActivationSpec&quot;&gt;
		&lt;property name=&quot;componentName&quot; value=&quot;filePoller&quot; /&gt;
		&lt;property name=&quot;destinationService&quot; ref=&quot;fileSenderService&quot; /&gt;
		&lt;property name=&quot;service&quot; ref=&quot;filePollerService&quot; /&gt;
		&lt;property name=&quot;component&quot;&gt;
			&lt;bean class=&quot;org.apache.servicemix.components.file.FilePoller&quot;&gt;
				&lt;property name=&quot;file&quot; value=&quot;${INBOX}&quot; /&gt;
				&lt;property name=&quot;period&quot; value=&quot;1000&quot; /&gt;
			&lt;/bean&gt;
		&lt;/property&gt;
	&lt;/bean&gt;

   &lt;bean id=&quot;fileSenderService&quot; class=&quot;javax.xml.namespace.QName&quot;&gt;
       &lt;constructor-arg value=&quot;fileSender&quot;/&gt;
   &lt;/bean&gt;

   &lt;bean id=&quot;filePollerService&quot; class=&quot;javax.xml.namespace.QName&quot;&gt;
       &lt;constructor-arg value=&quot;filePoller&quot;/&gt;
   &lt;/bean&gt;

	&lt;bean id=&quot;propertyConfigurer&quot;
		class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&gt;
		&lt;property name=&quot;location&quot; value=&quot;classpath:rutas.properties&quot; /&gt;
	&lt;/bean&gt;

&lt;/beans&gt;
</pre></p>
<p>Eso es por el momento,<span style="text-decoration:line-through;"> intentare subir el código fuente del proyecto maven a Git esta semana.</span></p>
<p>Código disponible <a href="http://github.com/jbovet/ServiceMixEmbebbed" target="_blank">aqui</a></p>
<p>Muchas gracias por darte el tiempo de leer.</p>
<br /> Tagged: <a href='http://josebovet.wordpress.com/tag/apache/'>apache</a>, <a href='http://josebovet.wordpress.com/tag/apache-servicemix/'>apache servicemix</a>, <a href='http://josebovet.wordpress.com/tag/servicemix/'>ServiceMix</a>, <a href='http://josebovet.wordpress.com/tag/spring/'>Spring</a>, <a href='http://josebovet.wordpress.com/tag/springjbicontainer/'>SpringJBIContainer</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=15&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/04/13/spring-y-apache-servicemix-embebido/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/04/filebindingexample.jpg" medium="image">
			<media:title type="html">filebindingexample</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/04/maven.png" medium="image">
			<media:title type="html">maven</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/04/maven3.png" medium="image">
			<media:title type="html">maven3</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/04/sts1.png" medium="image">
			<media:title type="html">sts1</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/04/maven5.png" medium="image">
			<media:title type="html">maven5</media:title>
		</media:content>
	</item>
		<item>
		<title>Publicado Libro de Diseño Ágil con TDD</title>
		<link>http://josebovet.wordpress.com/2010/01/15/publicaco-libro-de-diseno-agil-con-tdd/</link>
		<comments>http://josebovet.wordpress.com/2010/01/15/publicaco-libro-de-diseno-agil-con-tdd/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 13:14:18 +0000</pubDate>
		<dc:creator>José Bovet Derpich</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Libros]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[libros]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test Driven Developmen]]></category>

		<guid isPermaLink="false">http://josebovet.wordpress.com/?p=7</guid>
		<description><![CDATA[Se ha publicado el libro de diseño ágil con TDD  entre sus temas: Test Driven Development Técnicas de diseño OO para crear código testable. Objetos Mocks Acceptance TDD Papel de TDD en un entorno de desarrollo ágil y su relación con otras técnicas como Integración continua. Además el libro tiene un enfoque muy practico contando con multitud de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=7&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://josebovet.files.wordpress.com/2010/01/portada1.jpg"><img class="size-medium wp-image-9 aligncenter" title="portada" src="http://josebovet.files.wordpress.com/2010/01/portada1.jpg?w=203&#038;h=300" alt="" width="203" height="300" /></a></p>
<p>Se ha publicado el libro de diseño ágil con TDD  entre sus temas:</p>
<ul>
<li>Test Driven Development</li>
<li>Técnicas de diseño OO para crear código testable.</li>
<li>Objetos Mocks</li>
<li>Acceptance TDD</li>
<li>Papel de TDD en un entorno de desarrollo ágil y su relación con otras técnicas como Integración continua.</li>
<li>Además el libro tiene un enfoque muy practico contando con multitud de ejemplos en java, c# y python.</li>
</ul>
<p>Extracto del sitio oficial.</p>
<blockquote><p><em>Diseño Ágil con TDD nos enseñará a:</em><em>* Escribir tests que aumenten la fiabilidad del código.<br />
* Escribir tests de aceptación que nos ayudarán a centrarnos, específicamente, en el problema a resolver.<br />
* Mejorar nuestros diseños para hacerlos más simples y flexibles.<br />
* Escribir código fácil de mantener. Con <strong>TDD</strong>,<strong> </strong>los test son documentación viva y actualizada de nuestro código, la mejor documentación posible.<br />
* Encajar TDD dentro del paradigma ágil y relacionarlo con otras técnicas como la integración continua.</em></p></blockquote>
<p>El libro esta bajo <a href="http://www.safecreative.org/work/1001085275573">Licencia Creative Commons-nd</a> Pueden descargar el libro en la<a href="http://www.dirigidoportests.com/el-libro"> pagina oficial.</a></p>
<br /> Tagged: book, libros, TDD, Test Driven Developmen <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/josebovet.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/josebovet.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/josebovet.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/josebovet.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/josebovet.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/josebovet.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/josebovet.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/josebovet.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=josebovet.wordpress.com&amp;blog=2286156&amp;post=7&amp;subd=josebovet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://josebovet.wordpress.com/2010/01/15/publicaco-libro-de-diseno-agil-con-tdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>-33.445013 -70.639218</georss:point>
		<geo:lat>-33.445013</geo:lat>
		<geo:long>-70.639218</geo:long>
		<media:content url="http://0.gravatar.com/avatar/27c8a6e6e2f1908b34e38d5fd65b6079?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">josebovet</media:title>
		</media:content>

		<media:content url="http://josebovet.files.wordpress.com/2010/01/portada1.jpg?w=203" medium="image">
			<media:title type="html">portada</media:title>
		</media:content>
	</item>
	</channel>
</rss>
