文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发JavaGuice与Spring框架的区别
精品推荐
特别推荐
·实例讲解:Java中的SOAP技术
·Java语言出现的背景 影响及前景
·Java精华积累:初学者都应该搞懂的问题
·Java多媒体框架设计自动播放机实例详解
·如何有效防止Java程序源码被人偷窥?
·Cell插件在J2EE系统中的应用
·初学者想学Hibernate,初级基础教程
·Java语言实现支持视频点播的WEB服务器
·关于Java编程的中文问题的几条分析原则
·确保J2ME无线移动商业应用程序的安全性
热点TOP10
·SCJP认证套题解析(1)
·好东西介绍,直接用 java 命令行动态生成jpg文件
·JavaClassLoader与Package机制
·反射在Java Swing编程中的应用
·基于Java的界面布局DSL的设计与实现
·垃圾清理势在必行——Java垃圾收集算法
·Java应用技巧:对于 Cookie 的操作详解
·Java编译器对于String常量表达式的优化
·基于Java的界面布局 DSL 的设计与实现
·JAVA和.NET两个平台对于安全功能的比较

Guice与Spring框架的区别

日期:2008年5月9日 作者: 查看:[大字体 中字体 小字体]


public interface MyService ...{
    void myMethod();
}

这样的话,在MyModule里的configure方法中就可以不加任何东西,容器就会自动注射给MyServiceImpl对象。

2,可以对Field进行注解式注入
在Client.java中也可以把这个@Inject标注在MyService  service;的前边,如:@Inject MyService service;


3,可使用自定义Annotation标注。

 
package mypackage;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.google.inject.BindingAnnotation;

@Retention(RetentionPolicy.RUNTIME)
@Target( ...{ ElementType.FIELD, ElementType.PARAMETER })
@BindingAnnotation
public @interface MyInterface ...{
   
}

那么Client.java需要改为

package mypackage;

import com.google.inject.Inject;

public class Client ...{

    @Inject @MyInterface MyService service;
   
    void setService(MyService service) ...{ // 这里的方法名字可以任意定义
        this.service = service;
    }

    public void myMethod() ...{
        service.myMethod();
    }
}

MyModule.java中的configure方法内容需改为:

binder.bind(MyService.class).annotatedWith(MyInterface.class).to(
    MyServiceImpl.class).in(Scopes.SINGLETON);
意思是说对于标注为MyInterface的MyService定义的对象进行注入

    进行Annotation标注的成员(Field,method,argument等)进行自定义Annotation标注,该成员既拥有该属性,可以在运行,根据这些成员的不同属性,做一些不同的事情 例如:spring的AspectJ,xdoclet等都是如此。

下边是我做了一下对比
Guice与Spring的对比   Spring Guice 使用XML 使用将类与类之间的关系隔离到xml中,由容器负责注入被调用的对象,因此叫做依赖注入不使用xml,将类与类之间的关系隔离到Module中,声名何处需要注入,由容器根据Module里的描述,注入被调用的对象。 使用Annotation   使用
支持自定义Annotation标注,对于相同的接口定义的对象引用,为它们标注上不同的自定义Annotation注释,就可以达到同一个类里边的同一个接口的引用,注射给不同的实现,在Module里用标注做区分,灵活性大大增加。
使用Annotation也未必是好事,范型等新特性也未必是好事,目前大多的服务器均不支持jdk1.5,wls要9以前才支持,而目前的客户由于价格原因也很少选用wls9的,至少我们做过的项目中都没有。功能再强,客户不需要,何用?
运行效率装载spring配置文件时,需解析xml,效率低,getBean效率也不高,不过使用环境不会涉及到getBean,只有生产环境的时候会用到getBean,在装载spring应用程序的时候,已经完成全部的注射,所以这个低效率的问题不是问题。使用Annotation,cglib, 效率高与spring最明显的一个区别,spring是在装载spring配置文件的时候把该注入的地方都注入完,而Guice呢,则是在使用的时候去注射,运行效率和灵活性高。
类耦合度耦合度低,强调类非侵入,以外部化的方式处理依赖关系,类里边是很干净的,在配置文件里做文章,对类的依赖性极低。高,代码级的标注,DI标记@inject侵入代码中,耦合到了类层面上来,何止侵入,简直侵略,代码耦合了过多guice的东西,大大背离了依赖注入的初衷,对于代码的可维护性,可读性均不利 类编写时需要编写xml,配置Bean,配置注入只需声明为@inject,等着被注入,

上一页 [1] [2] [3] 下一页 




上一篇:Generic Data Access Objects 设计模式

下一篇:JAVA加密解密---自定义类加载器应用

相关文章:
·DVD-R和DVD+R的区别
·绝对意想不到 廉价板与高价板的区别
·游戏框架之心得体会(1)
·“可用性”与“用户体验”的区别与联系
·Java多媒体框架设计自动播放机实例详解
·WEB开发中Spring AOP实际应用一例
·澄清认识:JSP与Javascript有什么样的区别
·Spring中定义Bean
·hp open view与nortel optivity,cisco work的区别
·玩玩Spring之Rod Johnson与轮子理论
相关软件:
·WorldWide Telescope Spring 微软世界望远镜
·SOX 404实施经典资料 COSO-ERM一体化框架
·自动分割页面生成框架程序
·SpringboardV0.70
·框架式留言本

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot