知识大全 Guice整合Struts2简易教程
Posted 知
篇首语:恐惧自己受苦的人,已经因为自己的恐惧在受苦。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Guice整合Struts2简易教程相关的知识,希望对你有一定的参考价值。
Guice整合Struts2简易教程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Guice简介
Helloworld
简介 本文为如何用Guice进行DI和如何整合Struts
简介
Guice是Google推出的一款DI框架 因其优秀荣获了Jolt大奖 和Spring相比 要轻量很多 运行时只要指定一个配置类 实现其 google inject Module接口 指定接口和实现类即可
需要的基础jar包有
Guice需要的jar包 如果是web应用 需要guice servlet jar 整合Struts 则需要guice struts plugin jar
aopalliance jar
guice jar
guice servlet jar
guice struts plugin jar
Struts 需要的jar包
mons fileupload jar
mons io jar
mons logging jar
freemarker jar
ognl jar
struts core jar
xwork jar
Guice与Spring的对比(此表格转自网络)
Spring
Guice
使用XML
使用将类与类之间的关系隔离到xml中 由容器负责注入被调用的对象 因此叫做依赖注入
不使用xml 将类与类之间的关系隔离到Module中 声名何处需要注入 由容器根据Module里的描述 注入被调用的对象
使用Annotation
使用支持自定义Annotation标注 对于相同的接口定义的对象引用 为它们标注上不同的自定义Annotation注释 就可以达到同一个类里边的同一个接口的引用 注射给不同的实现 在Module里用标注做区分 灵活性大大增加 使用Annotation也未必是好事 范型等新特性也未必是好事 目前大多的服务器均不支持jdk wls要 以前才支持 而目前的客户由于价格原因也很少选用wls 的 至少我们做过的项目中都没有 功能再强 客户不需要 何用?
运行效率
装载spring配置文件时 需解析xml 效率低 getBean效率也不高 不过使用环境不会涉及到getBean 只有生产环境的时候会用到getBean 在装载spring应用程序的时候 已经完成全部的注射 所以这个低效率的问题不是问题
使用Annotation cglib 效率高与spring最明显的一个区别 spring是在装载spring配置文件的时候把该注入的地方都注入完 而Guice呢 则是在使用的时候去注射 运行效率和灵活性高
类耦合度
耦合度低 强调类非侵入 以外部化的方式处理依赖关系 类里边是很干净的 在配置文件里做文章 对类的依赖性极低
高 代码级的标注 DI标记@inject侵入代码中 耦合到了类层面上来 何止侵入 简直侵略 代码耦合了过多guice的东西 大大背离了依赖注入的初衷 对于代码的可维护性 可读性均不利
类编写时
需要编写xml 配置Bean 配置注入
只需声明为@inject 等著被注入 最后在统一的Module里声明注入方式
仅支持IOC
否 spring目前已经涉猎很多部分
是 目前仅仅是个DI容器
是否易于代码重构
统一的xml配置入口 更改容易
配置工作是在Module里进行 和spring异曲同功
支持多种注入方式
构造器 setter方法
Field 构造器 setter方法
灵活性
如果同一个接口定义的引用需要注入不同的实现 就要编写不同的Module 烦琐
动态注入
如果你想注射的一个实现 你还未知呢 怎么办呢 spring是没办法 事先在配置文件里写死的 而Guice就可以做到 就是说我想注射的这个对象我还不知道注射给谁呢 是在运行时才能得到的的这个接口的实现 所以这就大大提高了依赖注射的灵活性 动态注射
与现有框架集成度
高 众多现有优秀的框架(如struts x等)均提供了spring的集成入口 而且spring已经不仅仅是依赖注入 包括众多方面 Spring也提供了对Hibernate等的集成 可大大简化开发难度 提供对于orm rmi webservice等等接口众多 体系庞大
可以与现有框架集成 不过仅仅依靠一个效率稍高的DI 就想取代spring的地位 有点难度
配置复杂度
在xml中定位类与类之间的关系 难度低
代码级定位类与类之间的关系 难度稍高
关于Annotation的简介 可以查看笔者另一篇教程
%E %AE% %E %BB% B
Helloworld
笔者写了一个demo 对于简单的应用Guice还是比Spring方便很多
└─
└─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 void invoke(User user);对于接口实现
public void invoke(User user) user setUserName( Name : + user getUserName());当然最重要的是action
@Injectprivate UserService userService;@Injectprivate User user;本教程采用字段注入
<constant name= struts objectFactory value= guice /><constant name= struts i n encoding value= utf /><constant name= guice module value= nfig ModuleConfig /> cha138/Article/program/Java/ky/201311/28927相关参考
知识大全 Struts2 Spring Hibernate 的简单整合
Struts2SpringHibernate的简单整合 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 spring struts2 ibatis框架整合开发
这里主要介绍一下spring+struts+ibatis所需要的jar包文件spring所需包 以上包为spring配置基本包ibatis所需包 有解决方法的朋友们希望能回复 与struts整合
在Struts中整合Spring的IoC支持是一件十分简单的事情让我们一步一步来实现 )复制strutsspringpluginxxxjar和相应的springj
知识大全 Eclipse整合JPA + Struts 2 +&nbs
Eclipse整合JPA+Struts2+&nbs 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 学习比较Struts2和Struts1:Struts2完胜
学习比较Struts2和Struts1:Struts2完胜 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
Struts2简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一什么是Struts? 虽然
Struts2注解(旧&新) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 旧版本使用注解 开
Struts2输入校验流程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 类型转换器负责请求参数
Struts2分页实现源码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &
Struts2的整体流程(上) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!