1. Guice简介
为甘南等地区用户提供了全套网页设计制作服务,及甘南网站建设行业解决方案。主营业务为成都网站制作、成都做网站、甘南网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Guice是Google推出的一款DI框架,因其优秀荣获了Jolt大奖。和Spring相比,要轻量很多。运行时只要指定一个配置类,实现其com.google.inject.Module接口,指定接口和实现类即可。
需要的基础jar包有
Guice需要的jar包,如果是web应用,需要guice-servlet-2.0.jar,整合Struts2则需要guice-struts2-plugin-2.0.jar
aopalliance.jar
guice-2.0.jar
guice-servlet-2.0.jar
guice-struts2-plugin-2.0.jar
Struts2需要的jar包
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.0.4.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
Guice与Spring的对比 | ||
| Spring | Guice |
使用XML | 使用将类与类之间的关系隔离到xml中,由容器负责注入被调用的对象,因此叫做依赖注入 | 不使用xml,将类与类之间的关系隔离到Module中,声名何处需要注入,由容器根据Module里的描述,注入被调用的对象。 |
使用Annotation |
| 使用 |
运行效率 | 装载spring配置文件时,需解析xml,效率低,getBean效率也不高,不过使用环境不会涉及到getBean,只有生产环境的时候会用到getBean,在装载spring应用程序的时候,已经完成全部的注射,所以这个低效率的问题不是问题。 | 使用Annotation,cglib, 效率高与spring最明显的一个区别,spring是在装载spring配置文件的时候把该注入的地方都注入完,而Guice呢,则是在使用的时候去注射,运行效率和灵活性高。 |
类耦合度 | 耦合度低,强调类非侵入,以外部化的方式处理依赖关系,类里边是很干净的,在配置文件里做文章,对类的依赖性极低。 | 高,代码级的标注,DI标记@inject侵入代码中,耦合到了类层面上来,何止侵入,简直侵略,代码耦合了过多guice的东西,大大背离了依赖注入的初衷,对于代码的可维护性,可读性均不利 |
类编写时 | 需要编写xml,配置Bean,配置注入 | 只需声明为@inject,等着被注入, |
仅支持IOC | 否,spring目前已经涉猎很多部分 | 是,目前仅仅是个DI容器 |
是否易于代码重构 | 统一的xml配置入口,更改容易 | 配置工作是在Module里进行,和spring异曲同功 |
支持多种注入方式 | 构造器,setter方法 | Field,构造器,setter方法 |
灵活性 |
| 1,如果同一个接口定义的引用需要注入不同的实现,就要编写不同的Module,烦琐 2,动态注入 如果你想注射的一个实现,你还未知呢,怎么办呢,spring是没办法,事先在配置文件里写死的,而Guice就可以做到,就是说我想注射的这个对象我还不知道注射给谁呢,是在运行时才能得到的的这个接口的实现,所以这就大大提高了依赖注射的灵活性,动态注射。 |
与现有框架集成度 | 1, 高,众多现有优秀的框架(如struts1.x等)均提供了spring的集成入口,而且spring已经不仅仅是依赖注入,包括众多方面。 | 1,可以与现有框架集成,不过仅仅依靠一个效率稍高的DI,就想取代spring的地位,有点难度。 |
配置复杂度 | 在xml中定位类与类之间的关系,难度低 | 代码级定位类与类之间的关系,难度稍高 |
2Helloworld
笔者写了一个demo,对于简单的应用Guice还是比Spring方便很多
└─com
└─greysh
└─guice
├─action
│ UserAction.java
│
├─config
│ ModuleConfig.java
│
├─model
│ User.java
│
└─service
│ UserService.java
│
└─impl
UserServiceImpl.java
代码见附件
Guie加载的原理是先去调用自己实现Module接口的类,这个类类似Spring的applicationcontext.然后调用configure函数的binder进行绑定,相当于spring里面的ref绑定,然后绑定完后就在需要注入的放指定 @Inject 进行注入,主要有构造函数注入,方法注入,字段注入。一般而言用方法注入
本教程的User为实体类,仅仅有一个字段userName;
public interface UserService { |
对于接口实现
public void invoke(User user) { |
当然最重要的是action
@Inject |
本教程采用字段注入
由于不采用Struts2的自身的DI,因此要指定为guice
您正在阅读的是“Guice整合Struts2简易教程”
当前文章:Guice整合Struts2简易教程
网站URL:http://www.shufengxianlan.com/qtweb/news34/532034.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联