Guice1.0与Struts2.0.11的整合

Guice作为一个新的IoC框架,在文档等方面并没有太多优势,但有一个非常好的邮件列表可以弥补。因为Slackiss使用的是Guice作为IoC框架,使用的Struts2作为表现层的页面控制,因此必然需要将Struts2与Guice整合在一起。在整合的时候,花了不少时间,也浪费了不少时间,在这里记一下如何整合。其实流程还是很简单的,只不过是一些细节可能会注意不到。

 

又想起李义勇老师的一句话:计算机这东西,会的人感觉啥都不难,不会的人,看起来就是天书。

 

我的整合是这么做的:

1.把Struts2的例子程序打开,有一个struts-blank,用它作为Struts2的基础。

2.在不添加Guice的情况下,调试一个基础的Helloworld程序出来。

3.添加Guice1.0里面的一个Jar包,叫做Guice-1.0.jar。

4.从Guice官网下载guice-struts2-plugin-1.0.1.jar

   添加guice-servlet-1.0.jar,Guice-struts2-plugin-1.0.1.jar和Guice-1.0.jar到Classpath中。

5.在这个地方要注意的是,不要使用Guice1.0自带的那个guice-struts2-plugin-1.0.jar的包,否则,你依然可以运行基础的Struts2的功能,但如果想集成Dao或者使用Provider等功能,则无论是功能还是性能都不会让你好受。

6.配置web.xml,主要添加下面一些内容:

    <!-- guice filter for struts2 plug-in-->
    <filter>
        <filter-name>guice</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>
    
    <!-- struts2 filter -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    
    <!-- filter mapping -->
    <filter-mapping>
        <filter-name>guice</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 似乎官方文档还没有说明这一点,因此也要注意。

7.配置Struts2,让Guice生成Action和拦截器

<constant name="struts.objectFactory" value="guice" />

 8.这样应该就可以正常使用Guice与Struts2了。

 

在这里就不讨论整合后的所谓优点与缺点了,只是说明这样整合就可以正常使用。

你可能感兴趣的:(DAO,框架,struts,servlet,IOC)