Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Guice vs AspectJ_Java_Guice_Aspectj - Fatal编程技术网

Java Guice vs AspectJ

Java Guice vs AspectJ,java,guice,aspectj,Java,Guice,Aspectj,几个月前我曾与GUice合作,现在当我回到GUice时,我发现我必须重新阅读GUice文档和示例,以了解我对代码所做的操作 然而,当我看AspectJ时,它太直观了。它是Java语言的直观扩展。我觉得我已经可以坐下来立即编写AspectJ代码了 因此,我很想放弃对Guice的追求,转而使用AspectJ。尤其是Spring正在生成AspectJ代码 在AspectJ之上,Guice有哪些特性可以阻止我放弃Guice 谷歌为什么不放弃Guice而改用AspectJ呢 反之亦然,除了直观性之外,As

几个月前我曾与GUice合作,现在当我回到GUice时,我发现我必须重新阅读GUice文档和示例,以了解我对代码所做的操作

然而,当我看AspectJ时,它太直观了。它是Java语言的直观扩展。我觉得我已经可以坐下来立即编写AspectJ代码了

因此,我很想放弃对Guice的追求,转而使用AspectJ。尤其是Spring正在生成AspectJ代码

在AspectJ之上,Guice有哪些特性可以阻止我放弃Guice

谷歌为什么不放弃Guice而改用AspectJ呢

反之亦然,除了直观性之外,AspectJ的哪些特性会促使我放弃Guice

如果允许我在这里“编织”一个问题,是什么阻止Java语言与AspectJ合并,或者在Java的未来版本中提供类似的“方面”


注意:为了触发快乐删除azillas,我意识到这个问题可能太笼统了——但如果我知道要问什么进一步的细节,那么我甚至不需要问,只需要问google/bing就可以了,因为我知道我不知道的东西。正如你所见,我的Guice知识严重退化,我甚至认不出自己的笔迹。

根据我的说法,AspectJ和Guice做了不同的事情

Guice注入依赖项,AspectJ处理横切关注点

如果您使用spring,那么实际上使用Guice的价值就更小了,因为有太多的重叠,因此spring/AspectJ的共生是一个引人注目的解决方案


对于非spring项目,我个人更喜欢guice,因为它更轻。

正如Peter所说,guice和AspectJ是完全不同的东西。Guice进行依赖项注入,节省了大量的工厂编写,同时使代码灵活、易于测试,并添加了一些有用的东西,如作用域。它还允许通过方法截取(通过编程配置截取哪些方法,而不是DSL)实现非常简单、简单的AOP。这实际上只是它提供的另一个红利,根本不是它的核心目标


至于AspectJ为什么没有合并到Java中。。。我觉得很多人都不希望这样。AOP是强大的,但以一种危险的方式。虽然它在某些情况下确实非常有用,并且在这些情况下大大简化了代码,但如果过度使用,可能会使理解程序中发生的事情变得更加困难。

Spring是基于依赖项注入和面向方面编程构建的

Guice是一个依赖注入引擎

AspectJ是一个面向方面的引擎

看到区别了吗?Guice和AspectJ是互补的;春天已经有了两者


应该提到的是,Spring支持自己的基于拦截器的AOP,除了AspectJ之外,它不需要字节码操作

Guice包括它自己的AOP支持:不知道;非常感谢。看起来像Spring的方法拦截器。它是Bob Lee最初的Guice的一部分还是在第一个版本后添加的?AbstractModule.bindInterceptor是Guice 1.0的一部分。我一直都有同样的感觉。如果我有AspectJ,为什么要使用依赖注入框架?