Bean和对象是一回事吗?

这是个非常好的问题!虽然 "Bean"和"对象"有关系,但它们在语境上不完全等价,有一些微妙但重要的区别:

✅ 相同点:都是某个类的实例

名称

对象

Bean

都是用new出来的类的实例

☆☆☆☆☆ 所以在本质上,Spring Bean也是一个Java对象。

Bean是对象,而对象不一定是Bean,对象的概念包含Bean的概念。

从某种程度上来讲,"Bean"更高级,更自动化,好比"对象"是洗衣劳动者,而"Bean"则是一台洗衣机。

❗ 不同点:Spring Bean是特指的"被Spring容器管理的对象"

名称

对象

Bean

谁创建它?

你手动用new

Spring容器自动创建

是否托管?

❌ 不托管

✅ 被 Spring 管理(生命周期、依赖等)

是否可自动注入?

❌ 不能

✅ 可以用@Autowired等注入

生命周期控制?

❌ 你手动控制

✅ Spring 控制整个生命周期

配置方式

你写代码创建

通过注解(如@Service、@Component)或XML配置创建

✅ 举个例子:同一个类,差距来了

public class OrderService 
{
    public void doSomething() {}
}

➤ 普通 Java 对象

OrderService orderService = new OrderService(); // 你手动new出来

这是一个普通对象,☆ (重点) Spring 完全不知道它的存在 (重点) ☆,不能@Autowired到其他地方!

➤ Spring Bean

@Service
public class OrderService {
    public void doSomething() {}
}

配合:

@Autowired
private OrderService orderService;

Spring会自动扫描、创建、注入,这就是Spring Bean。

🧠 总结记忆口诀:

✅ “Bean 是对象,但对象不一定是 Bean。”

  • Bean是被Spring容器管理的对象
  • 普通对象则是你手动new出来的,Spring不知道也不会管理它
全部评论

相关推荐

评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务