Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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/2/spring/11.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 Spring-自动布线与手动方法调用_Java_Spring - Fatal编程技术网

Java Spring-自动布线与手动方法调用

Java Spring-自动布线与手动方法调用,java,spring,Java,Spring,我看到了很多这样的例子(选项1): 与(选项2)相比,此选项有哪些优点: 据我所知,使用选项1可以更容易地在bean之间导航(但有了IDE的支持,在选项2中也同样容易做到)。缺点是我猜是耦合,所以在测试中很难在bean B中覆盖bean A,因为它是直接引用的(在选项1中) 使用选项1(如速度或smthn)还有其他特殊原因吗?没有任何理由使用选项1。 我甚至不知道这个符号是什么时候开始使用的。 然而,与你所想的不同,这 a().makeB(); 实际上不直接调用方法a()。 选项1实际上并不创

我看到了很多这样的例子(选项1):

与(选项2)相比,此选项有哪些优点:

据我所知,使用选项1可以更容易地在bean之间导航(但有了IDE的支持,在选项2中也同样容易做到)。缺点是我猜是耦合,所以在测试中很难在bean B中覆盖bean A,因为它是直接引用的(在选项1中)


使用选项1(如速度或smthn)还有其他特殊原因吗?

没有任何理由使用选项1。 我甚至不知道这个符号是什么时候开始使用的。
然而,与你所想的不同,这

a().makeB();
实际上不直接调用方法
a()

选项1实际上并不创建类的另一个实例,而是代理调用并创建Bean(到达方法)(如果不存在),或者重新使用Bean(如果是单实例)。谢谢你
BeanFactory

CGLIB
在后台为您做了很多事情。

intercept:319, ConfigurationClassEnhancer$BeanMethodInterceptor


无论如何,作为IDE内部的简单性和可用性问题,选项2始终是一条路。
使用选项2,您还可以清楚地看到Bean的依赖关系


解决性能问题,不,没有真正的区别。你不应该真的担心那些小细节。Spring在任何地方都使用代理/拦截器。

示例二是否会创建另一个
A
而不是创建
B
,其中示例二注入bean
A
,因此您只创建一个实例?@Tom看到我的答案了吗。配置类始终是代理的。
a().makeB();
intercept:319, ConfigurationClassEnhancer$BeanMethodInterceptor