Google Guice,一个号称比Spring快100倍的IOC容器。
5 源码目录
我们从一份源码清单开始我们的Guice高级学习内容。下面的目录树是Guice 2.0的源码目录。
C:\USERS\XYLZ\BOOKS\GUICE\GUICE-2.0-SRC
├─examples [guice的一个XML实例,主要描述从xml中加载bean的过程]
│ └─src
│ └─example
│ └─xml
├─extensions [guice的官方插件]
│ ├─assistedinject [guice注入的一个助手插件,这个插件可以帮助我们生成一个工厂对象,而我们能够根据此工程对象生成我们所需要的实际对象]
│ │ ├─src
│ │ │ └─com
│ │ │ └─google
│ │ │ └─inject
│ │ │ └─assistedinject
│ │ └─test
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─assistedinject
│ ├─grapher [guice的Graphviz插件,允许通过Graphviz来绘制guice对象的依赖关系图形]
│ │ ├─src
│ │ │ └─com
│ │ │ └─google
│ │ │ └─inject
│ │ │ └─grapher
│ │ │ └─graphviz
│ │ └─test
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─grapher
│ │ └─demo
│ ├─jmx [guice的jmx插件,这个可以很方便的将我们的服务发布成一个MBean,这样就可以远程控制我们的服务了]
│ │ ├─src
│ │ │ └─com
│ │ │ └─google
│ │ │ └─inject
│ │ │ └─tools
│ │ │ └─jmx
│ │ └─test
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─tools
│ │ └─jmx
│ ├─jndi [guice的jndi插件,这个可以将我们的服务注入到jndi容器中,也算是guice与j2ee的一点联系吧]
│ │ └─src
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─jndi
│ ├─multibindings [guice的多绑定插件,允许绑定一系列的对象Set或者Map,从而可以一次性的获取对象Set或者Map,当然仅针对同一类型对象]
│ │ ├─src
│ │ │ └─com
│ │ │ └─google
│ │ │ └─inject
│ │ │ └─multibindings
│ │ └─test
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─multibindings
│ └─throwingproviders [guice的一个异常处理插件,这个插件允许提供一个Provider来处理实例化类抛出的异常]
│ ├─src
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─throwingproviders
│ └─test
│ └─com
│ └─google
│ └─inject
│ └─throwingproviders
├─javadoc [guice的javadoc文档]
│ ├─com
│ │ └─google
│ │ └─inject
│ │ ├─assistedinject
│ │ ├─binder
│ │ ├─jndi
│ │ ├─matcher
│ │ ├─multibindings
│ │ ├─name
│ │ ├─servlet
│ │ ├─spi
│ │ ├─spring
│ │ ├─throwingproviders
│ │ ├─tools
│ │ │ └─jmx
│ │ └─util
│ └─resources
├─lib [guice编译依赖的第三方jar包]
│ └─build
├─servlet [guice的Servlet插件]
│ ├─lib
│ │ └─build
│ ├─src
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─servlet
│ └─test
│ └─com
│ └─google
│ └─inject
│ └─servlet
├─spring [guice的Spring插件]
│ ├─src
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─spring
│ └─test
│ └─com
│ └─google
│ └─inject
│ └─spring
├─src [guice的核心代码]
│ └─com
│ └─google
│ ├─common
│ │ ├─base
│ │ └─collect
│ └─inject
│ ├─binder
│ ├─internal
│ ├─jndi
│ ├─matcher
│ ├─name
│ ├─spi
│ ├─tools
│ │ └─jmx
│ └─util
├─struts2 [guice的Struts 2插件]
│ ├─example
│ │ ├─root
│ │ │ └─WEB-INF
│ │ │ └─classes
│ │ └─src
│ │ └─com
│ │ └─google
│ │ └─inject
│ │ └─struts2
│ │ └─example
│ ├─lib
│ └─plugin
│ └─src
│ └─com
│ └─google
│ └─inject
│ └─struts2
└─test [guice的junit测试代码]
└─com
├─google
│ └─inject
│ ├─commands
│ ├─example
│ ├─internal
│ ├─matcher
│ ├─name
│ ├─spi
│ ├─tools
│ │ └─jmx
│ └─util
└─googlecode
└─guice
其实我们可以从guice的测试用例去学习guice的用法,这里就不谈了。
首先我们编译guice的源码。
我们看看生成的文件。
C:\USERS\XYLZ\BOOKS\GUICE\GUICE-2.0-SRC\BUILD
│ classes.bar
│ guice-2.0-src.jar
│ guice-2.0-src.zip
│ guice-2.0.zip
│ guice-with-deps.jar
│
├─classes
│ └─com
├─dist
│ │ aopalliance.jar
│ │ COPYING
│ │ guice-2.0.jar
│ │ guice-assistedinject-2.0-src.jar
│ │ guice-assistedinject-2.0.jar
│ │ guice-jmx-2.0-src.jar
│ │ guice-jmx-2.0.jar
│ │ guice-jndi-2.0-src.jar
│ │ guice-jndi-2.0.jar
│ │ guice-multibindings-2.0-src.jar
│ │ guice-multibindings-2.0.jar
│ │ guice-servlet-2.0-src.jar
│ │ guice-servlet-2.0.jar
│ │ guice-spring-2.0-src.jar
│ │ guice-spring-2.0.jar
│ │ guice-struts2-plugin-2.0-src.jar
│ │ guice-struts2-plugin-2.0.jar
│ │ guice-throwingproviders-2.0-src.jar
│ │ guice-throwingproviders-2.0.jar
│ │
│ └─javadoc
├─javadoc
├─javadoc-core
└─META-INF
MANIFEST.MF
在这里我们可以看到除了生成guice的jar包和源码外,还包括各个插件的jar包和源码以及javadoc文档。
这里需要特别说明的是guice内部使用了cglib-2.2.1-snapshot.jar和asm-3.1.jar,由于这两个包非常常见,为了不与其他jar包依赖的这两个库冲突,guice使用了jarjar来将这两个库包含在guice内部的com.google.inject.internal.cglib包和com.google.inject.internal.asm包中。这个过程是在common.xml中的如下段完成的。
classpath="${common.basedir}/lib/build/jarjar-1.0rc8.jar"/>
<jarjar jarfile="${build.dir}/${ant.project.name}-with-deps.jar">
<fileset dir="${build.dir}/classes"/>
<zipfileset src="${common.basedir}/lib/build/cglib-2.2.1-snapshot.jar"/>
<zipfileset src="${common.basedir}/lib/build/asm-3.1.jar"/>
<rule pattern="net.sf.cglib.**" result="com.google.inject.internal.cglib.@1"/>
<rule pattern="org.objectweb.asm.**" result="com.google.inject.internal.asm.@1"/>
<keep pattern="com.google.inject.**"/>
</jarjar>
Guice的源码目录结构大体如此(各个包和类的介绍在后面中会具体谈到),下一节中我们开始Guice的IOC体系。
参考资源:
相关推荐
标签:google、inject、guice、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
标签:extensions、google、assistedinject、inject、guice、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...
标签:extensions、google、assistedinject、inject、guice、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...
标签:google、inject、extensions、guice、multibindings、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...
标签:google、inject、extensions、guice、multibindings、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变...
sisu-guice-2.1.7-noaop.jar
标签:google、inject、extensions、guice、servlet、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...
标签:google、inject、extensions、guice、servlet、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...
标签:google、inject、guice、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...
标签:google、inject、guice、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...
google-guice struts2-plugin
标签:google、inject、guice、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...
guice-spring-1.0.jar
guice-servlet-3.0.jar
赠送jar包:shiro-guice-1.4.0.jar; 赠送原API文档:shiro-guice-1.4.0-javadoc.jar; 赠送源代码:shiro-guice-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-guice-1.4.0.pom; 包含翻译后的API文档:shiro-...
赠送jar包:jersey-guice-1.19.jar; 赠送原API文档:jersey-guice-1.19-javadoc.jar; 赠送源代码:jersey-guice-1.19-sources.jar; 赠送Maven依赖信息文件:jersey-guice-1.19.pom; 包含翻译后的API文档:jersey...
sisu-guice-3.1.3-no_aop.jar
java 开发插件jar包,与guice相关
赠送jar包:shiro-guice-1.4.0.jar; 赠送原API文档:shiro-guice-1.4.0-javadoc.jar; 赠送源代码:shiro-guice-1.4.0-sources.jar; 赠送Maven依赖信息文件:shiro-guice-1.4.0.pom; 包含翻译后的API文档:shiro-...