`
wbj0110
  • 浏览: 1601090 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Google Guice 高级教程01 - 源码目录

阅读更多

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的源码。

ant dist

我们看看生成的文件。

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中的如下段完成的。

 

<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"

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体系。

参考资源:

  1. Google Guice
  2. Spring
  3. Martin Fowler:Inversion of Control Containers and the Dependency Injection pattern
  4. Graphviz
  5. jmx
  6. jndi
  7. Servlet
  8. Struts 2
  9. junit
  10. jarjar
分享到:
评论

相关推荐

    guice-4.0-API文档-中文版.zip

    标签:google、inject、guice、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    guice-assistedinject-3.0-API文档-中英对照版.zip

    标签:extensions、google、assistedinject、inject、guice、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    guice-assistedinject-3.0-API文档-中文版.zip

    标签:extensions、google、assistedinject、inject、guice、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    guice-multibindings-3.0-API文档-中英对照版.zip

    标签:google、inject、extensions、guice、multibindings、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    guice-multibindings-3.0-API文档-中文版.zip

    标签:google、inject、extensions、guice、multibindings、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变...

    sisu-guice-2.1.7-noaop.jar

    sisu-guice-2.1.7-noaop.jar

    guice-servlet-4.0-API文档-中文版.zip

    标签:google、inject、extensions、guice、servlet、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...

    guice-servlet-4.0-API文档-中英对照版.zip

    标签:google、inject、extensions、guice、servlet、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    guice-4.0-API文档-中英对照版.zip

    标签:google、inject、guice、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    guice-3.0-API文档-中文版.zip

    标签:google、inject、guice、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    guice-struts2-plugin-1.0.1.jar

    google-guice struts2-plugin

    guice-3.0-API文档-中英对照版.zip

    标签:google、inject、guice、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    guice-spring-1.0.jar

    guice-spring-1.0.jar

    guice-servlet-3.0.jar

    guice-servlet-3.0.jar

    shiro-guice-1.4.0-API文档-中文版.zip

    赠送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-...

    jersey-guice-1.19-API文档-中文版.zip

    赠送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

    sisu-guice-3.1.3-no_aop.jar

    guice-struts2-plugin-3.0.jar

    java 开发插件jar包,与guice相关

    shiro-guice-1.4.0-API文档-中英对照版.zip

    赠送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-...

Global site tag (gtag.js) - Google Analytics