Guice 没有类似的概念。例如,Guice 可以自动注入具有默认构造函数的任何类,而无需任何特殊的类注解。为什么 spring 必须知道启动时的每个 bean?出于自动装配的目的,弹簧不能只从类路径中查找类吗?我能想到的一个原因是 AOP。但是如果你不使用 AOP,整个 bean 定义计算会增加大量的启动时间,这是完全没有必要的。
编辑:
明确地说,我希望 spring 从类路径中按需查找一个类
@Component
class Bar {
}
@Component
class Foo {
@Autowired Bar bar;
public void doSomething() {}
}
Foo
因此,当我使用spring创建 bean 时,getBean()
可以看到它需要一个Bar
,因此它可以简单地在类路径上查找Bar
。这就是 Guice 所做的,它避免了在开发过程中非常缓慢的不必要的组件扫描。