简而言之,Spring bean是Spring框架在运行时管理的对象。Spring bean是任何Spring应用程序的基本构建块。你编写的大多数应用程序逻辑代码都将放在Spring bean中。
Spring bean的管理包括:
- 创建一个对象
- 提供依赖项(例如其他bean,配置属性)
- 拦截对象方法调用以提供额外的框架功能
- 销毁一个对象
Spring bean是框架的基本概念。作为Spring的用户,你应该对这个核心抽象有深刻的理解。
如何定义Spring bean?
如你所知,Spring负责创建bean对象。但首先,你需要告诉框架它应该创建哪些对象。
你是怎么做到的?
通过提供bean定义。
Bean定义告诉Spring框架应该将哪些类用作bean。但那还不是全部。Bean定义就像食谱一样。它们还描述了bean的属性。我们将在本文后面讨论属性。但在我们进入之前,让我们关注bean的定义。
可以通过三种不同的方式定义Spring bean:
使用构造型@Component注释(或其衍生物)注释你的类
编写在自定义Java配置类中使用@Bean注释的bean工厂方法
在XML配置文件中声明bean定义
在现代项目中,你将仅使用组件注释和bean工厂方法。如果涉及到XML配置,那么Spring现在主要允许它向后兼容。
bean定义方法之间的选择主要取决于对要用作Spring bean的类的源代码的访问。
Spring bean为@Component
如果你拥有源代码,则通常会直接在类上使用@Component注释。
@Component class MySpringBeanClass { //... }
在运行时,Spring会找到所有使用@Component或其派生类进行注释的类,并将它们用作bean定义。查找带注释的类的过程称为组件扫描。
你可能想知道@Component的衍生物是什么。
@Conpontent衍生物是Spring构造型注释,它们本身用@Component注释。这个事实允许我们用它们代替@Component。
@Component衍生列表包括:
@Service
@Repository
@Controller
注释之间的区别纯粹是信息性的。它们允许你根据通用职责轻松对bean进行分类。你可以使用这些注释将bean类标记为特定应用程序层的成员,Spring框架会将它们全部视为