@Component 里面的@Bean 是单例吗?

Is @Bean inside of @Component a singleton?

我在某些地方读到@Component 和@configuration 内部的@Bean 之间的区别,如果后者提供单例bean 而前者不提供的话。谁能证实这是真的还是假的?

请说明问题中singleton的含义。实际上,在 Spring 世界中,SINGLETON 是默认的 bean 作用域,在 Component 或 Configuration 中定义的 bean 的作用域是 SINGLETON 并不重要,但是可以通过向 @Bean 注释提供 scope 属性来覆盖它。 Configuration 中定义的 Bean 有一些限制。您可以在此处找到更多详细信息:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Bean.html

当使用 @Configuration 注释 classes 时,这些是在 full 模式下处理的,这意味着 class 使用 ASM 读取,增强使用 CGLIB,以便方法间调用将 return 相同的实例。

使用 @Component 声明那些在 lite 模式下处理的 bean。不允许方法间引用(你可以这样做,但每次调用都会创建一个新的 bean)。

请参阅 Spring 参考指南中的其他 this section,其中对此进行了非常(呃)详细的解释。