`
bastengao
  • 浏览: 150439 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

struts2.2 与 guice3.0 整合

    博客分类:
  • java
阅读更多
最近看到 Guice 出3.0,以前看过一点guice ,对guice  的感觉还不错。之前一直都在搞SSH,有一点腻。所以想换换口味。网上关于Spring与Struts 整合的例子铺天盖地,可是 Guice与Struts 整合的例子少的可怜。找了好长时间,还是没找到满意的答案,只能靠自己了,自已来吧。
因为之前做过guice2.0与struts2整合的小例子,所以觉得guice3.0的整合方法应该差不多。想着只要在 struts.xml 里面加上
<constant name="struts.objectFactory" value="guice" />
,经过一翻尝试之后,结果这种方法是错误的。guice3.0变化比较大, 参考 guice官网 http://code.google.com/p/google-guice/wiki/Struts2Integration 的教程。

依赖:如果是maven只需要加下面的依赖
<!--struts-->
<dependency>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-core</artifactId>
     <version>${org.apache.struts.version}</version>
</dependency>

<!--guice-->
<dependency>
      <groupId>com.google.inject</groupId>
      <artifactId>guice</artifactId>
      <version>3.0</version>
</dependency>
<!--guice-struts-plugin-->
<dependency>
      <groupId>com.google.inject.extensions</groupId>
      <artifactId>guice-struts2</artifactId>
      <version>3.0</version>
</dependency>


如果不是maven则首先是struts2的jar包和guice的jar包
guice-3.0.jar
guice-struts2-plugin-3.0.jar
guice-servlet-3.0.jar
aopalliance.jar
javax.inject.jar


然后是 配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
       
    <listener>
        <listener-class>com.example.MyGuiceServletContextListener</listener-class>
    </listener>
    <filter>
        <filter-name>guice</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>guice</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>


struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.devMode" value="true"/>    

    <package name="struts"  extends="struts-default">
        <action name="test" class="com.example.TestAction">
            <result name="success">/test.html</result>
        </action>
    </package>
</struts>


实现自己的 GuiceServetContextListener
package com.exmaple;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Singleton;
import com.google.inject.servlet.GuiceServletContextListener;
import com.google.inject.servlet.ServletModule;
import com.google.inject.struts2.Struts2GuicePluginModule;
import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;


/**
 *
 * @author Basten Gao
 */
public class MyGuiceServletContextListener extends GuiceServletContextListener {
    @Override
    protected Injector getInjector() {
        return Guice.createInjector(
                new Struts2GuicePluginModule(),
                new ServletModule() {
                    @Override
                    protected void configureServlets() {
                        // Struts 2 setup
                        bind(StrutsPrepareAndExecuteFilter.class).in(Singleton.class);
                        filter("/*").through(StrutsPrepareAndExecuteFilter.class);
                        //注册自己的Module,对Guice了解的都懂得
                        install(new MyModule());
                    }
                });

    }
}



配置到此结束。

接下来就可以利用Guice进行注入了。


import javax.inject.Inject;

/**
 *
 * @author Basten Gao
 */
public class TestAction {

    @Inject
    private TestService testService;

    public String execute() throws Exception {
        testService.doSomeThing();
        return Action.SUCCESS;
    }

}
分享到:
评论
2 楼 tian583391571 2013-06-26  
成功集成了guice容器,多谢!
1 楼 yingzhor 2011-05-05  
http://topic.csdn.net/u/20110504/21/ccfd924d-79b7-4ce8-b438-707cc073ef09.html?seed=804993049&r=73132619#r_73132619

相关推荐

    Struts2与Guice(Guice3.0、Struts2.x)的整合(附demo)

    总结,Struts2与Guice的整合是一种优化Java Web应用设计的方式,它利用了依赖注入的优势,降低了组件间的耦合度,提高了代码的可读性和可测试性。通过具体的配置和编程实践,我们可以有效地将这两个框架结合在一起,...

    google guice 3.0源码

    Guice 3.0是其一个重要的版本,提供了许多改进和新特性。 在Guice 3.0源码中,我们可以深入学习以下几个关键知识点: 1. **依赖注入(Dependency Injection)**:Guice的核心概念是依赖注入,它允许我们声明所需的...

    guice3 + struts2.2 整合

    本文将详细介绍如何整合Guice3与Struts2.2,以及这两个框架的核心概念和配置过程。 首先,Guice3是一个轻量级的依赖注入框架,由Google开发。它简化了Java应用中的对象创建和管理,通过自动管理对象的生命周期和...

    Java guice3.0轻量级的依赖注入框架 组件

    Java Guice 3.0是一款轻量级的依赖注入(Dependency Injection, DI)框架,它致力于简化Java应用程序的构建过程,让组件之间的依赖关系更加清晰和易于管理。依赖注入是一种设计模式,它允许代码在运行时自动管理和...

    Struts2的第一个入门实例(三)--Struts2与Guice整合

    在本实例中,我们将深入探讨如何将Google的依赖注入框架Guice与Struts2整合,以实现更高效、更灵活的代码管理。 在Java Web开发中,依赖注入(DI)是一种设计模式,它可以帮助我们降低组件之间的耦合,使得测试和...

    Guice 3.0 Programming Guide

    在《Guice 3.0 编程指南》中提到,每个功能或调用流程都应该与一个接口相对应,而具体的实现可能会混合各种业务逻辑。尽管如此,系统仍然可以通过接口交互保持清晰的结构。 #### 三、IoC 和 DI 的优势 IoC 和 DI ...

    Struts2+Guice2整合。如果运行不起来你砍我

    **Struts2与Guice的整合** 整合Struts2和Guice的主要目的是将Guice的依赖注入功能引入到Struts2的控制器中,这样可以更方便地管理Action类的依赖。通常,整合步骤包括以下几点: 1. 添加Guice和Struts2-Guice插件的...

    struts2 整合guice

    将Struts2与Guice整合可以充分利用Guice的依赖注入特性,提高Struts2应用的可测试性和模块化。 整合Struts2和Guice,首先需要在项目中引入Guice的依赖库。这通常通过在pom.xml(如果你使用的是Maven)或者build....

    guice-3.0.rar

    - guice-spring-3.0.jar提供了Guice与Spring框架的整合,使得开发者可以利用Guice的灵活性和Spring的功能。它可以将Spring的bean注入到Guice管理的环境中,反之亦然。 - Spring的XML配置可以通过Guice的模块进行...

    guice-3.0.jar

    guice-3.0.jar ,Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;

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

    赠送jar包:guice-3.0.jar; 赠送原API文档:guice-3.0-javadoc.jar; 赠送源代码:guice-3.0-sources.jar; 赠送Maven依赖信息文件:guice-3.0.pom; 包含翻译后的API文档:guice-3.0-javadoc-API文档-中文(简体)版...

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

    赠送jar包:guice-3.0.jar; 赠送原API文档:guice-3.0-javadoc.jar; 赠送源代码:guice-3.0-sources.jar; 赠送Maven依赖信息文件:guice-3.0.pom; 包含翻译后的API文档:guice-3.0-javadoc-API文档-中文(简体)-...

    guice-3.0.jar.zip

    标题中的"guice-3.0.jar.zip"指的是Google Guice框架的一个版本3.0的归档文件,它被压缩成ZIP格式以便于传输和存储。Guice是一个轻量级的依赖注入框架,由Google开发,它使得Java开发者能够更方便地管理对象之间的...

    Struts2+Guice3整合(不过运行不起来,你砍我)

    这个是我花了四个小时在eclipse上做的项目。我知道还有两个和我一样的项目。我实话告诉你。那两个我都下载了。特么的都不能运行起来。这个如果启动不起来,你砍我。login.jsp是首页。输入信息他会跳转到index.jsp。...

    测试报告模板+guice-3.0.jar+reportng-1.1.6.jar+velocity-dep-1.4.jar.zip

    首先,`guice-3.0.jar` 是Google Guice的库,这是一个轻量级的依赖注入框架,用于Java应用程序。Guice帮助开发者管理对象的生命周期和依赖关系,使得在编写测试时可以轻松地创建和配置依赖对象,这对于自动化测试...

Global site tag (gtag.js) - Google Analytics