最近看到 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;
}
}
分享到:
相关推荐
总结,Struts2与Guice的整合是一种优化Java Web应用设计的方式,它利用了依赖注入的优势,降低了组件间的耦合度,提高了代码的可读性和可测试性。通过具体的配置和编程实践,我们可以有效地将这两个框架结合在一起,...
Guice 3.0是其一个重要的版本,提供了许多改进和新特性。 在Guice 3.0源码中,我们可以深入学习以下几个关键知识点: 1. **依赖注入(Dependency Injection)**:Guice的核心概念是依赖注入,它允许我们声明所需的...
本文将详细介绍如何整合Guice3与Struts2.2,以及这两个框架的核心概念和配置过程。 首先,Guice3是一个轻量级的依赖注入框架,由Google开发。它简化了Java应用中的对象创建和管理,通过自动管理对象的生命周期和...
Java Guice 3.0是一款轻量级的依赖注入(Dependency Injection, DI)框架,它致力于简化Java应用程序的构建过程,让组件之间的依赖关系更加清晰和易于管理。依赖注入是一种设计模式,它允许代码在运行时自动管理和...
在本实例中,我们将深入探讨如何将Google的依赖注入框架Guice与Struts2整合,以实现更高效、更灵活的代码管理。 在Java Web开发中,依赖注入(DI)是一种设计模式,它可以帮助我们降低组件之间的耦合,使得测试和...
在《Guice 3.0 编程指南》中提到,每个功能或调用流程都应该与一个接口相对应,而具体的实现可能会混合各种业务逻辑。尽管如此,系统仍然可以通过接口交互保持清晰的结构。 #### 三、IoC 和 DI 的优势 IoC 和 DI ...
**Struts2与Guice的整合** 整合Struts2和Guice的主要目的是将Guice的依赖注入功能引入到Struts2的控制器中,这样可以更方便地管理Action类的依赖。通常,整合步骤包括以下几点: 1. 添加Guice和Struts2-Guice插件的...
将Struts2与Guice整合可以充分利用Guice的依赖注入特性,提高Struts2应用的可测试性和模块化。 整合Struts2和Guice,首先需要在项目中引入Guice的依赖库。这通常通过在pom.xml(如果你使用的是Maven)或者build....
- guice-spring-3.0.jar提供了Guice与Spring框架的整合,使得开发者可以利用Guice的灵活性和Spring的功能。它可以将Spring的bean注入到Guice管理的环境中,反之亦然。 - Spring的XML配置可以通过Guice的模块进行...
guice-3.0.jar ,Guice是Google开发的一个轻量级依赖注入框架(IOC)。Guice非常小而且快,功能类似与Spring,但效率上网上文档显示是它的100倍,而且还提供对Servlet,AOP,Struts等框架的支持;
赠送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文档-中文(简体)版...
赠送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"指的是Google Guice框架的一个版本3.0的归档文件,它被压缩成ZIP格式以便于传输和存储。Guice是一个轻量级的依赖注入框架,由Google开发,它使得Java开发者能够更方便地管理对象之间的...
这个是我花了四个小时在eclipse上做的项目。我知道还有两个和我一样的项目。我实话告诉你。那两个我都下载了。特么的都不能运行起来。这个如果启动不起来,你砍我。login.jsp是首页。输入信息他会跳转到index.jsp。...
首先,`guice-3.0.jar` 是Google Guice的库,这是一个轻量级的依赖注入框架,用于Java应用程序。Guice帮助开发者管理对象的生命周期和依赖关系,使得在编写测试时可以轻松地创建和配置依赖对象,这对于自动化测试...