我正在学习春天:)
我有疑虑,
请注意,对静态@Bean方法的调用永远不会被容器拦截,甚至在@Configuration类中也不会被拦截(参见上文)。这是由于技术限制:CGLIB子类化只能覆盖非静态方法。因此,直接调用另一个@Bean方法将具有标准的Java语义,从而导致直接从工厂方法本身返回一个独立的实例。
一个。 Spring在以下示例中不返回代理对象,因为静态方法无法覆盖。所以它会在这里返回原始对象。我是对的吗?
@Configuration
public class Config {
@Bean
public static Student student() {
return new Student();
}
}
湾是什么意思"请注意,对静态@Bean方法的调用永远不会被容器拦截,甚至在@Configuration类中也不会被拦截"
答案 0 :(得分:3)
一个。是的,你是对的。您将获得原始对象。
湾student()方法位于使用@Configuration批注注释的类Config中。所有在@Configuration类中使用@Bean注释的方法都是由spring通过创建代理来截获的。因此,您的方法是静态的,虽然它在Config类中,但它不会被Spring拦截,也不会创建任何代理。