日前Google推出了他自己的轻量级依赖注入(dependency inject)框架——Guice。Guice依靠Java新的Annotation特性,取代了XML的配置,并提供了灵活的注入方法,可以注入到成员、参数、方法等多个位置。在它的官方页面上有一份新手入门的文档,另外可以获取相关信息的就是两个人的blog链接。
初步试用了一下,感觉Guice的Annotation机制和Spring的XML配置功能上基本是完全等价的,只是一个是写在代码中,一个是写在配置文件中,这个也是日前JavaEye上面关于Annotation的讨论的核心——Annotation的引入究竟是倒退还是进步?我对依赖注入及两个框架都还不是了解的非常透彻,不好妄加评论。
下面就来说说Guice的试用感想:
Guice的注入机制是靠Binder、Injector、Module等类来实现的。开发者实现Module这个接口,编写他的configure(Binder binder)方法。这个方法的功效相当于Spring中用于配置的XML文件,它通过系统传递过来的参数binder进行注入规则的说明。基础的方法链就像是这个样子:
binder.bind(Service.class).to(ServiceImpl.class)
上面这条指令声明了用ServiceImpl来注入需要Service的地方。
@Inject
public void setService(Service service){
this.service = service;
}
注意到@Inject这个Annotation就是告诉Guice,这里需要注入。
另外,你还可以在不同的地方将同一个类注入为不同的实现,这需要借助额外Annotation的帮助:
binder.bind(Person.class).annotatedWith(Husband.class).to(Man.class)
这个绑定的声明将下面情况下的Person绑定为Man类型
private @Inject @Husband Person husband;
编辑好你自己的Module之后,注入的规则就创建完毕了。在需要注入的地方添加@Inject。Guice的工作原理从这张图里可以看的很清楚:
这样获得Injector之后,调用injector.getInstance(Class clazz)可以得到实体
Injector injector = Guice.createInjector(new MyModule());
我的这个例子和webapp完全没有关系,只是试验了一下Guice的依赖注入过程,真正的web使用应该是没有手动获取Injector的过程的。TestGuiceGoogle.rar
分享到:
相关推荐
Python完整程序-Excel_更灵活的操作方式_xlsxwriter_openpyxl,含有完整的源码
2024年中国人工智能创业者人群画像报告
C标准库源码
C标准库源码
C标准库源码
C标准库源码
医院感染应知应会知识竞赛必刷题库及答案.docx
Python完整程序-wx_表情轰炸,含有完整的源码
C标准库源码
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
Python完整程序-用Python在Excel中查找并替换数据,含有完整的源码
Python完整程序-批量更改Excel文件中多个工作表的内容,含有完整的源码
Python完整程序-飞鸟,含有完整的源码
【提升效率】学会使用aiofiles模块,让Python文件操作更高效!.docx
基于STM32的监护报警系统.pdf
内容概要:本文全面解析了遗传算法 (GA),这是一种源自生物进化理论的智能优化算法。文章追溯了GA的起源与发展历史,从最初提出到现代广泛的应用场景。GA的核心在于借鉴自然选择、遗传变异和适者生存的原则,将其转化为计算机算法。文中详细解释了其基本原理——通过初始化种群、评价个体适应度、执行选择、交叉与变异操作,最终逐步逼近最优解。遗传算法不仅因其卓越的全局搜索能力和对不同问题类型的强大适应性而在学术界备受关注,在现实世界中亦表现出巨大价值,涵盖从函数优化、组合优化到机器学习乃至信号处理和控制系统等领域的诸多实际问题中均有成功案例。 适用人群:对于有一定计算机基础知识的专业人士及研究人员来说,这是理解新一代AI算法的良好素材。同时适合希望跨学科研讨的生物学爱好者或从事数据分析、人工智能研究的专业团队。 使用场景及目标:本篇文章既可以作为研究生、高校师生开展科学研究项目前的背景知识准备材料;也可以成为企业工程师进行新技术评估或现有项目升级改造时的重要参考资料。对于有兴趣深入了解AI内部运作机制的人来说,这篇文献还可以为其提供更多关于如何模拟自然界智能规律去破解人类面临的挑战的新思路。 其他说明:文章除了理论论述之外,还提供了具体实施示例,并指出了当前存在的局限性和未来的潜在发展方向,是一份极具启发意义的技术报告。
发那科FANUC电路板全套驱动图纸及原理图集合,电源图集,专业维修人员必备电路设计图集。,发那科FANUC电路板图纸 全套驱动图纸 原理图 电源图,维修人员必备电路图。 ,核心关键词:发那科FANUC电路板图纸; 全套驱动图纸; 原理图; 电源图; 维修人员必备电路图。,"发那科FANUC全套电路板及驱动原理图:维修人员必备电源维修手册"
C标准库源码
C标准库源码