首页 > 解决方案 > 当我们在 Bean 是单例的情况下调用 new Bean() 会发生什么?

问题描述

嗨,这可能是重复的问题,对不起,但我找不到那个帖子。

问题:-假设有一个以这种方式编写的 A 类

  @Component
  public class A{}

现在,当我调用 A a = new A() 两次时,它会为我提供相同的对象吗?这可能是个愚蠢的问题,但您能详细说明一下吗?

谢谢,

标签: javaspringjavabeans

解决方案


当你调用A = new A()你的例子时,你总是会得到一个新实例,因为 A 没有实现为单例类。

它被注释为@Component 的事实只会在它在spring上下文中实例化时影响该类,并且实例化的变量= new()(有例外,但让我们概括一下)不在spring上下文中。

如果您想始终拥有相同的 bean,您应该使用 @Autowired 实例化您的变量“a”,方法如下:

@Autowired
private A a;

另请注意,@Autowired 仅在当前类也在 spring 上下文中时才有效(您没有使用 =new(...) 实例化它)。


推荐阅读