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

Guice轻量且快速,不失为一款好的ioc框架,下面说说与Struts2的整合。

1. 依赖包

除了需要加入Struts2的依赖包外,需加上Guice的依赖包和Struts-guice-plugin.jar扩展包:

aopalliance.jar,guice-3.0.jar,guice-servlet-3.0.jar,guice-struts2-plugin-3.0.jar,javax.inject.jar。

 

2. web.xml配置

以.do为例

1>. 在web.xml里加入guicefilter

 

	<filter>
		<filter-name>GuiceFilter</filter-name>
		<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>GuiceFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

2>.struts.properties或struts.xml

struts.objectFactory=guice

 或

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

  

3>. 创建一个Listener

 

代码如下:

 

public class GuiceListener extends GuiceServletContextListener {

	public Injector getInjector() {
		return Guice.createInjector(new Struts2GuicePluginModule(),
				new ServletModule() {
					protected void configureServlets() {
						// Struts 2 setup
						bind(StrutsPrepareAndExecuteFilter.class).in(
								Singleton.class);
						// 对 *.do
						filter("*.do").through(StrutsPrepareAndExecuteFilter.class);
						// Our app-specific code
						// 可在UserService里用注解@ImplementedBy(UserServiceImpl.class)代替下一行
						// bind(UserService.class).to(UserServiceImpl.class);
					}
				});
	}

}

 

 

既可以在module里写定,也可以用注解来实现注入。

不用再配struts2的filter了。

然后在web.xml里配入这个listener

	<listener>
		<listener-class>com.demo.listener.GuiceListener</listener-class>
	</listener>

 在Action类里,

	@Inject
	private User user;
	
	@Inject
	private UserService userService;

 即可完成注入。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值