﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-xylz-随笔分类-Google Guice</title><link>http://www.blogjava.net/xylz/category/43238.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 08 Jan 2010 05:06:10 GMT</lastBuildDate><pubDate>Fri, 08 Jan 2010 05:06:10 GMT</pubDate><ttl>60</ttl><item><title>Google Guice 高级教程02 - Guice的IOC容器(1)</title><link>http://www.blogjava.net/xylz/archive/2010/01/08/308684.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Fri, 08 Jan 2010 03:46:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2010/01/08/308684.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/308684.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2010/01/08/308684.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/308684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/308684.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在前面的教程中我们讲了Guice注入例子，在使用上具体描述了Guice的注入过程。在下面的篇幅中我们从源码级了解了Guice的注入过程。<br>我们从具体到抽象再到具体的深入了解Guice的内部运作机制 。<br>下面一张序列图就是描述了Guice最简单的一次注入过程。比如下面的例子是我们熟悉的。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2010/01/08/308684.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/308684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2010-01-08 11:46 <a href="http://www.blogjava.net/xylz/archive/2010/01/08/308684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 高级教程01 - 源码目录</title><link>http://www.blogjava.net/xylz/archive/2010/01/04/308218.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Mon, 04 Jan 2010 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2010/01/04/308218.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/308218.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2010/01/04/308218.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/308218.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/308218.html</trackback:ping><description><![CDATA[<p><font face="Courier New"><em><strong><a href="http://code.google.com/p/google-guice/" target="_blank">Google Guice</a></strong></em>，一个号称比<strong><em><a href="http://www.springsource.org/" target="_blank">Spring</a></em></strong>快100倍的IOC容器。某不才，也愿意跟随大家一起学习Guice的思想，如果能够在此过程中有所收获就达到了我们的目的。如果能够深刻理会<em><strong><a target="_blank" href="http://martinfowler.com/articles/injection.html">IOC</a></strong></em>背后的思想并能熟练掌握运用，甚至写出一个更棒的IOC容器那就更美好了。如果大家想学基础教程的，可以参考<strong><em><a href="http://www.blogjava.net/xylz/archive/2009/12/22/306955.html" target="_blank">前面的文章</a></em></strong>。</font></p>
<p><font size="5" face="Courier New"><strong>5 源码目录</strong></font></p>
<p>我们从一份源码清单开始我们的Guice高级学习内容。下面的目录树是Guice 2.0的源码目录。 </p>
<p>C:\USERS\XYLZ\BOOKS\GUICE\GUICE-2.0-SRC<br />
├─examples <font color="#0000ff">[guice的一个XML实例，主要描述从xml中加载bean的过程]</font><br />
│&nbsp; └─src<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─example<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─xml<br />
├─extensions <font color="#0000ff">[guice的官方插件]</font><br />
│&nbsp; ├─assistedinject <font color="#0000ff">[guice注入的一个助手插件，这个插件可以帮助我们生成一个工厂对象，而我们能够根据此工程对象生成我们所需要的实际对象]</font><br />
│&nbsp; │&nbsp; ├─src<br />
│&nbsp; │&nbsp; │&nbsp; └─com<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─assistedinject<br />
│&nbsp; │&nbsp; └─test<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─assistedinject<br />
│&nbsp; ├─grapher <font color="#0000ff">[guice的<em><strong><a href="http://www.graphviz.org/" target="_blank">Graphviz</a></strong></em>插件，允许通过<a href="http://www.graphviz.org/" target="_blank">Graphviz</a>来绘制guice对象的依赖关系图形]</font><br />
│&nbsp; │&nbsp; ├─src<br />
│&nbsp; │&nbsp; │&nbsp; └─com<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─grapher<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─graphviz<br />
│&nbsp; │&nbsp; └─test<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─grapher<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─demo<br />
│&nbsp; ├─jmx <font color="#0000ff">[guice的<strong><em><a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/" target="_blank">jmx</a></em></strong>插件，这个可以很方便的将我们的服务发布成一个MBean，这样就可以远程控制我们的服务了]</font><br />
│&nbsp; │&nbsp; ├─src<br />
│&nbsp; │&nbsp; │&nbsp; └─com<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─tools<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─jmx<br />
│&nbsp; │&nbsp; └─test<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─tools<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─jmx<br />
│&nbsp; ├─jndi <font color="#0000ff">[guice的<strong><em><a href="http://java.sun.com/products/jndi/" target="_blank">jndi</a></em></strong>插件，这个可以将我们的服务注入到jndi容器中，也算是guice与j2ee的一点联系吧]</font><br />
│&nbsp; │&nbsp; └─src<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─jndi<br />
│&nbsp; ├─multibindings <font color="#0000ff">[guice的多绑定插件，允许绑定一系列的对象Set或者Map,从而可以一次性的获取对象Set或者Map，当然仅针对同一类型对象]</font><br />
│&nbsp; │&nbsp; ├─src<br />
│&nbsp; │&nbsp; │&nbsp; └─com<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─multibindings<br />
│&nbsp; │&nbsp; └─test<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─multibindings<br />
│&nbsp; └─throwingproviders <font color="#0000ff">[guice的一个异常处理插件，这个插件允许提供一个Provider来处理实例化类抛出的异常]</font><br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─src<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─com<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─throwingproviders<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─test<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─throwingproviders<br />
├─javadoc <font color="#0000ff">[guice的javadoc文档]</font><br />
│&nbsp; ├─com<br />
│&nbsp; │&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─assistedinject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─binder<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─jndi<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─matcher<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─multibindings<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─name<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─servlet<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─spi<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─spring<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─throwingproviders<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─tools<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─jmx<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─util<br />
│&nbsp; └─resources<br />
├─lib <font color="#0000ff">[guice编译依赖的第三方jar包]</font><br />
│&nbsp; └─build<br />
├─servlet <font color="#0000ff">[guice的<em><strong><a href="http://java.sun.com/products/servlet/" target="_blank">Servlet</a></strong></em>插件]</font><br />
│&nbsp; ├─lib<br />
│&nbsp; │&nbsp; └─build<br />
│&nbsp; ├─src<br />
│&nbsp; │&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─servlet<br />
│&nbsp; └─test<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─servlet<br />
├─spring <font color="#0000ff">[guice的<strong><em><a href="http://www.springsource.org/" target="_blank">Spring</a></em></strong>插件]</font><br />
│&nbsp; ├─src<br />
│&nbsp; │&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─spring<br />
│&nbsp; └─test<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─spring<br />
├─src <font color="#0000ff">[guice的核心代码]</font><br />
│&nbsp; └─com<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─common<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; ├─base<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─collect<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─binder<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─internal<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─jndi<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─matcher<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─name<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─spi<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─tools<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─jmx<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─util<br />
├─struts2 <font color="#0000ff">[guice的<strong><em><a href="http://struts.apache.org/2.x/index.html" target="_blank">Struts 2</a></em></strong>插件]</font><br />
│&nbsp; ├─example<br />
│&nbsp; │&nbsp; ├─root<br />
│&nbsp; │&nbsp; │&nbsp; └─WEB-INF<br />
│&nbsp; │&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─classes<br />
│&nbsp; │&nbsp; └─src<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─struts2<br />
│&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─example<br />
│&nbsp; ├─lib<br />
│&nbsp; └─plugin<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─src<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─com<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─google<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─inject<br />
│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─struts2<br />
└─test <font color="#0000ff">[guice的<strong><em><a href="http://www.junit.org/" target="_blank">junit</a></em></strong>测试代码]</font><br />
&nbsp;&nbsp;&nbsp; └─com<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─google<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─inject<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─commands<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─example<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─internal<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─matcher<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─spi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─tools<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp; └─jmx<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; │&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─util<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─googlecode<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─guice </p>
<p><font face="Courier New">其实我们可以从guice的测试用例去学习guice的用法，这里就不谈了。</font></p>
<p><font face="Courier New">首先我们编译guice的源码。</font></p>
<div style="padding: 4px 5px 4px 4px; border-left-color: #cccccc; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">ant&nbsp;dist</span></div>
<p><font face="Courier New">我们看看生成的文件。</font></p>
<p>C:\USERS\XYLZ\BOOKS\GUICE\GUICE-2.0-SRC\BUILD<br />
│&nbsp; classes.bar<br />
│&nbsp; guice-2.0-src.jar<br />
│&nbsp; guice-2.0-src.zip<br />
│&nbsp; guice-2.0.zip<br />
│&nbsp; guice-with-deps.jar<br />
│&nbsp; <br />
├─classes<br />
│&nbsp; └─com<br />
├─dist<br />
│&nbsp; │&nbsp; aopalliance.jar<br />
│&nbsp; │&nbsp; COPYING<br />
│&nbsp; │&nbsp; guice-2.0.jar<br />
│&nbsp; │&nbsp; guice-assistedinject-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-assistedinject-2.0.jar<br />
│&nbsp; │&nbsp; guice-jmx-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-jmx-2.0.jar<br />
│&nbsp; │&nbsp; guice-jndi-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-jndi-2.0.jar<br />
│&nbsp; │&nbsp; guice-multibindings-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-multibindings-2.0.jar<br />
│&nbsp; │&nbsp; guice-servlet-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-servlet-2.0.jar<br />
│&nbsp; │&nbsp; guice-spring-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-spring-2.0.jar<br />
│&nbsp; │&nbsp; guice-struts2-plugin-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-struts2-plugin-2.0.jar<br />
│&nbsp; │&nbsp; guice-throwingproviders-2.0-src.jar<br />
│&nbsp; │&nbsp; guice-throwingproviders-2.0.jar<br />
│&nbsp; │&nbsp; <br />
│&nbsp; └─javadoc<br />
├─javadoc<br />
├─javadoc-core<br />
└─META-INF<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MANIFEST.MF
</p>
<p>在这里我们可以看到除了生成guice的jar包和源码外，还包括各个插件的jar包和源码以及javadoc文档。</p>
<p>这里需要特别说明的是guice内部使用了cglib-2.2.1-snapshot.jar和asm-3.1.jar，由于这两个包非常常见，为了不与其他jar包依赖的这两个库冲突，guice使用了<em><strong><a href="http://code.google.com/p/jarjar/" target="_blank">jarjar</a></strong></em>来将这两个库包含在guice内部的com.google.inject.internal.cglib包和com.google.inject.internal.asm包中。这个过程是在common.xml中的如下段完成的。</p>
<br />
<div style="padding: 4px 5px 4px 4px; border-left-color: #cccccc; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">taskdef&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="jarjar"</span><span style="color: #ff0000;">&nbsp;classname</span><span style="color: #0000ff;">="com.tonicsystems.jarjar.JarJarTask"</span><span style="color: #ff0000;"><br />
<br />
classpath</span><span style="color: #0000ff;">="${common.basedir}/lib/build/jarjar-1.0rc8.jar"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">jarjar&nbsp;</span><span style="color: #ff0000;">jarfile</span><span style="color: #0000ff;">="${build.dir}/${ant.project.name}-with-deps.jar"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">fileset&nbsp;</span><span style="color: #ff0000;">dir</span><span style="color: #0000ff;">="${build.dir}/classes"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">zipfileset&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="${common.basedir}/lib/build/cglib-2.2.1-snapshot.jar"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">zipfileset&nbsp;</span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="${common.basedir}/lib/build/asm-3.1.jar"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">rule&nbsp;</span><span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">="net.sf.cglib.**"</span><span style="color: #ff0000;">&nbsp;result</span><span style="color: #0000ff;">="com.google.inject.internal.cglib.@1"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">rule&nbsp;</span><span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">="org.objectweb.asm.**"</span><span style="color: #ff0000;">&nbsp;result</span><span style="color: #0000ff;">="com.google.inject.internal.asm.@1"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">keep&nbsp;</span><span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">="com.google.inject.**"</span><span style="color: #0000ff;">/&gt;</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">jarjar</span><span style="color: #0000ff;">&gt;</span></div>
<p>Guice的源码目录结构大体如此(各个包和类的介绍在后面中会具体谈到)，下一节中我们开始Guice的IOC体系。</p>
<p>参考资源：</p>
<ol>
    <li><font face="Courier New"><em><strong><a href="http://code.google.com/p/google-guice/" target="_blank">Google Guice</a></strong></em></font></li>
    <li><font face="Courier New"><strong><em><a href="http://www.springsource.org/" target="_blank">Spring</a></em></strong></font></li>
    <li><a id="Editor_Results_rprSelectionList_ctl11_LinkTitle" class="titlelink" href="../../xylz/archive/2009/12/22/306955.html">Google Guice 入门教程01 - 依赖注入(1)</a></li>
    <li><a href="http://martinfowler.com/">Martin Fowler</a>:<a target="_blank" href="http://martinfowler.com/articles/injection.html">Inversion of Control Containers and the Dependency Injection pattern</a></li>
    <li><font color="#0000ff"><em><strong><a href="http://www.graphviz.org/" target="_blank">Graphviz</a></strong></em></font></li>
    <li><font color="#0000ff"><strong><em><a href="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/" target="_blank">jmx</a></em></strong></font></li>
    <li><font color="#0000ff"><strong><em><a href="http://java.sun.com/products/jndi/" target="_blank">jndi</a></em></strong></font></li>
    <li><font color="#0000ff"><em><strong><a href="http://java.sun.com/products/servlet/" target="_blank">Servlet</a></strong></em></font></li>
    <li><font color="#0000ff"><strong><em><a href="http://struts.apache.org/2.x/index.html" target="_blank">Struts 2</a></em></strong></font></li>
    <li><font color="#0000ff"><strong><em><a href="http://www.junit.org/" target="_blank">junit</a></em></strong></font></li>
    <li><em><strong><a href="http://code.google.com/p/jarjar/" target="_blank">jarjar</a></strong></em></li>
</ol>
上一篇：
<a id="Editor_Results_rprSelectionList_ctl04_Hyperlink1" class="titlelink" href="../../xylz/archive/2009/12/31/307917.html">Google Guice 入门教程08 - 整合第三方组件(2)</a><br />
下一篇：
<a id="Editor_Results_rprSelectionList_ctl01_LinkTitle" class="titlelink" href="../../xylz/archive/2010/01/08/308684.html">Google Guice 高级教程02 - Guice的IOC容器(1)</a><img src ="http://www.blogjava.net/xylz/aggbug/308218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2010-01-04 23:45 <a href="http://www.blogjava.net/xylz/archive/2010/01/04/308218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程08 - 整合第三方组件(2)</title><link>http://www.blogjava.net/xylz/archive/2009/12/31/307917.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Thu, 31 Dec 2009 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/31/307917.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307917.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/31/307917.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307917.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本章节继续讨论Google Guice与第三方的整合，这里主要讨论如何整合JMX的服务，通过guice-jmx插件我们可以很方便的将我们的服务注入到JMX服务中，这样就能够通过远程调用来控制我们的服务。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/31/307917.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-31 15:35 <a href="http://www.blogjava.net/xylz/archive/2009/12/31/307917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程07 - 整合第三方组件(1)</title><link>http://www.blogjava.net/xylz/archive/2009/12/29/307574.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Mon, 28 Dec 2009 16:11:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/29/307574.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307574.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/29/307574.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307574.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307574.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Google Guice 整合第三方组件。<br><br>在《Google Guice 入门教程06 – Web 和Servlet》 中我们看到了Guice 整合Struts 2的应用。本章节继续讨论Guice整合其它第三方组件的应用。<br><br>本章节重点谈Guice与DWR和Spring的整合。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/29/307574.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-29 00:11 <a href="http://www.blogjava.net/xylz/archive/2009/12/29/307574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程06 – Web 和 Servlet</title><link>http://www.blogjava.net/xylz/archive/2009/12/27/307464.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Sun, 27 Dec 2009 14:58:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/27/307464.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307464.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/27/307464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307464.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本章节主要讲Guice中如何开发Servlet，当然了作为IOC的容器，Guice在这方面仍然局限于依赖注入功能。作为WEB方面的开发就不能不提Struts，这里着重谈如何与Struts 2进行整合。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/27/307464.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-27 22:58 <a href="http://www.blogjava.net/xylz/archive/2009/12/27/307464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程05 - AOP（面向切面编程）</title><link>http://www.blogjava.net/xylz/archive/2009/12/27/307400.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Sat, 26 Dec 2009 16:16:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/27/307400.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307400.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/27/307400.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本章节主要讨论Guice中AOP的使用，其中花了一些篇幅谈AOP的概念，然后通过一些API和例子来说明AOP的具体使用过程。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/27/307400.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-27 00:16 <a href="http://www.blogjava.net/xylz/archive/2009/12/27/307400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程04 - 依赖注入(4)</title><link>http://www.blogjava.net/xylz/archive/2009/12/25/307282.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Fri, 25 Dec 2009 10:02:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/25/307282.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307282.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/25/307282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307282.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307282.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本章节继续讨论依赖注入的其他话题，包括作用域（scope，这里有一个与线程绑定的作用域例子）、立即初始化（Eagerly Loading Bindings）、运行阶段（Stage）、选项注入（Optional Injection）等等。 &nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/25/307282.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-25 18:02 <a href="http://www.blogjava.net/xylz/archive/2009/12/25/307282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程03 - 依赖注入(3)</title><link>http://www.blogjava.net/xylz/archive/2009/12/24/307199.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Thu, 24 Dec 2009 11:13:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/24/307199.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307199.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/24/307199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307199.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本章节继续讨论依赖注入的一些其它话题，包括多接口的实现、Provider的使用、绑定常量和绑定Properties等。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/24/307199.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-24 19:13 <a href="http://www.blogjava.net/xylz/archive/2009/12/24/307199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程02 - 依赖注入(2)</title><link>http://www.blogjava.net/xylz/archive/2009/12/23/307092.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Wed, 23 Dec 2009 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/23/307092.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/307092.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/23/307092.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/307092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/307092.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文主要讨论Google Guice三种属性注入的方式，包括基本属性注入、构造函数注入和Setter注入等。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/23/307092.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/307092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-23 23:45 <a href="http://www.blogjava.net/xylz/archive/2009/12/23/307092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google Guice 入门教程01 - 依赖注入(1)</title><link>http://www.blogjava.net/xylz/archive/2009/12/22/306955.html</link><dc:creator>xylz</dc:creator><author>xylz</author><pubDate>Tue, 22 Dec 2009 15:28:00 GMT</pubDate><guid>http://www.blogjava.net/xylz/archive/2009/12/22/306955.html</guid><wfw:comment>http://www.blogjava.net/xylz/comments/306955.html</wfw:comment><comments>http://www.blogjava.net/xylz/archive/2009/12/22/306955.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/xylz/comments/commentRss/306955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/xylz/services/trackbacks/306955.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 基于Google Guice 2.0的入门教程，本章节主要讲类的依赖注入，也就是IOC容器的核心组件。&nbsp;&nbsp;<a href='http://www.blogjava.net/xylz/archive/2009/12/22/306955.html'>阅读全文</a><img src ="http://www.blogjava.net/xylz/aggbug/306955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/xylz/" target="_blank">xylz</a> 2009-12-22 23:28 <a href="http://www.blogjava.net/xylz/archive/2009/12/22/306955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>