9. 什么是 Spring Bean?
大约 1 分钟
Spring Bean 是 Spring 框架的核心概念之一。简单来说,Spring Bean 是指由 Spring IOC 容器管理的对象。这些对象的生命周期(创建、初始化、销毁)以及它们之间的依赖关系都由 Spring IOC 容器负责管理。
1. Spring Bean 的定义与配置
Spring Bean 可以通过多种方式定义和配置,常见的方法包括:
1.1 XML 配置文件
在传统的 Spring 应用中,Bean 通常通过 XML 配置文件进行定义。每个 Bean 都有唯一的标识符(id
)和一个与之关联的类(class
),Spring 容器通过读取这些配置来实例化和管理 Bean。
<bean id="serviceA" class="com.example.ServiceA">
<property name="serviceB" ref="serviceB"/>
</bean>
<bean id="serviceB" class="com.example.ServiceB"/>
1.2 基于注解的配置
随着 Spring 版本的发展,基于注解的配置方式逐渐成为主流。通过注解,开发者可以直接在 Java 类中定义 Spring Bean。
- @Component:标识一个类是一个 Spring Bean。
import org.springframework.stereotype.Component;
@Component
public class ServiceA {
// 依赖注入
}
- @Service、@Repository、@Controller:这些是
@Component
的派生注解,分别用于标识服务类、数据访问层类和控制器类。
import org.springframework.stereotype.Service;
@Service
public class ServiceA {
// 业务逻辑
}
- @Autowired:用于自动注入依赖。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class ServiceA {
private final ServiceB serviceB;
@Autowired
public ServiceA(ServiceB serviceB) {
this.serviceB = serviceB;
}
}
1.3 基于 Java 配置类
除了 XML 和注解,Spring 还支持基于 Java 配置类的方式定义 Bean,这种方式常用于 Spring Boot 项目中。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class AppConfig {
@Bean
public ServiceA serviceA() {
return new ServiceA(serviceB());
}
@Bean
public ServiceB serviceB() {
return new ServiceB();
}
}