什么是 Spring Bean ?

Spring框架中的bean是被IoC容器实例化、组装和管理的对象。控制反转(IoC)允许对象定义其依赖关系,而非自行创建。通过@Component注解及@Configuration类,我们可以配置和管理bean。例如,Company类与Address类之间的依赖关系可以通过IoC容器进行管理,并使用AnnotationConfigApplicationContext创建并启动容器,验证bean的存在和属性值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Bean 定义

在Spring中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是由Spring IoC容器实例化、组装和以其他方式管理的对象。
这个定义非常简明扼要,但是忽略了一个重要的东西——Spring IoC容器。让我们深入了解一下它是什么以及它带来的好处。

IoC容器

简单地说,控制反转,或简称IoC,是一个对象定义其依赖关系而不创建依赖关系的过程。此对象将构造此类依赖项的工作委托给IoC容器。
在深入IoC之前,让我们先声明几个域类。

Domain Classes

假设我们有一个类声明:

public class Company {
    private Address address;
 
    public Company(Address address) {
        this.address = address;
    }
 
    // getter, setter and other properties
}

这个类需要一个Address类型:

public class Address {
    private String street;
    private int number;
 
    public Address(String street, int number) {
        this.street = street;
        this.number = number;
    }
 
    // getters and setters
}

Bean配置

首先,让我们用@Component注释Company类:

@Component
public class Company {
    // 这部分和之前一样
}

下面是一个配置类,它向IoC容器提供bean元数据:

@Configuration
@ComponentScan(basePackageClasses = Company.class)
public class Config {
    @Bean
    public Address getAddress() {
        return new Address("High Street", 1000);
    }
}

配置类生成一个Address类型的bean。它还带有@ComponentScan注释,该注释指示容器在包含Company类的包中查找bean。
当Spring IoC容器构造这些类型的对象时,所有对象都被称为Spring bean,因为它们是由IoC容器管理的。
因为我们在配置类中定义了bean,所以我们需要一个AnnotationConfigApplicationContext类的实例来构建一个容器:

ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);

快速测试验证bean的是否存在和属性值:

Company company = context.getBean("company", Company.class);
assertEquals("High Street", company.getAddress().getStreet());
assertEquals(1000, company.getAddress().getNumber());

结果证明IoC容器已经正确地创建和初始化了bean。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值