Bean 基本概念
Spring容器的基本管理单元,Spring的核心功能为AOP和IOC,其本质在于代替开发者来管理Java对象的生命周期和互相关联关系,而这些在Spring容器中的Java对象被称为bean。
@Bean 和@Component 区别
-
@Bean
用于显式声明单个bean,而不是让Spring自动执行。它将bean的声明与类定义解耦,并允许按照自定义的方式创建和配置bean。当声明在@Configuration
注解的配置类中,可以在其他方法中直接调用,不需要@Autowired
注入。 -
@Component
用于使用类路径扫描自动检测和自动配置bean。在注释类和bean(即每个类的bean)之间存在一对一的隐式映射。需要@Autowired
注入。
简单的讲,@Bean
显式的声明了一个bean,bean的默认名称为方法名;@Component
隐式的声明了一个bean,bean的默认名称为类名。
Bean 作用域
在Spring中bean的默认模式为单例模式,通过添加@Scope
注解可以配置bean的不同作用域。
# 默认是单例模式
@scope
# 多例模式, 每次注入都会产生一个新的bean
@scope("prototype")
# request模式,每一次HTTP请求都会产生一个新的bean
@scope("request")
# session模式,每一次HTTP请求都会产生一个新的bean,同时该bean会在当前HTTP session内持续有效
@scope("session")