方法注入是如何实现的



在我实现类似spring的依赖注入过程中,我对spring可以通过调用内部方法注入bean这一事实感到困惑,但它是如何做到这一点的?

如何实现这样的ioc容器:

@Bean
public A a() {
return new A();
}
@Bean
public B b() {
B b = new B();
b.setA(a());
return b;
}
@Bean
public C c() {
C c = new C();
c.setB(b());
return c;
}

假设我们谈论的是@Configuration类,则会创建动态实例代理(使用CGLIB(,并且代理逻辑会拦截所有方法调用。

在单例bean(默认bean作用域(的情况下,实际方法在第一次调用时只会被调用一次——这是您可以使用调试器验证自己的事情。将截获连续调用,并从注册表返回正确的实例。

最新更新