@Component内的@Bean是单身吗?

时间:2019-06-25 03:15:02

标签: java spring singleton

我在某些地方已经读到@Component内部的@Bean和@configuration之间的区别,如果后者提供了一个singleton bean,而前者则没有。谁能确认这是真的吗?

2 个答案:

答案 0 :(得分:0)

在使用带有{ "first": { empty:false }, "second": { empty:false } } 注释的类时,这些类将以 full 模式进行处理,这意味着将使用ASM读取该类,并使用CGLIB对其进行增强,以便内部方法调用将返回相同的实例。

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

请参阅《 Spring参考指南》中的this section部分,其中对此进行了详细说明。

答案 1 :(得分:-1)

请在您的问题中指定单例的含义。实际上,在春季世界中,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