注解 @Bean

2025/06/18

文章目录

一、背景

这篇文章来看类:org.springframework.context.annotation.Bean

二、@Bean

作用于方法上。

问题:所以这个注解是要在更小的维度上去操控 bean 吗?

被@Bean 修饰的方法代表的语义是什么?

框架中称这种方法为BeanMethod(org.springframework.context.annotation.BeanMethod)。

@Bean 就是工厂方法的体现。

每个 BeanMethod 就是一条生产线,生产单一产品,汇总在@Configuration 类中就是个大工厂,可以生产很多种产品。

不同的 BeanMethod 之间可以互相调用。

三、生命周期

和普通 bean 的初始化优先级是怎样的?

三、bean 名称

生成的 bean 的名称是如何来的?

默认情况下,BeanMethod 生成的 Bean 名称就是方法名称。 可以通过注解的属性进行覆盖。

img.png

@Bean 方法名称的生成逻辑

四、使用场景

整合第三方库,因为第三方对于开发者来说是只读的

@Configuration
public class ThirdPartyConfig {
    
    // 整合无法添加@Component 注解的库
    @Bean
    public DataSource dataSource() {
        HikariConfig config = new HikariConfig(); // 第三方类
        config.setJdbcUrl("jdbc:mysql://localhost/db");
        config.setUsername("root");
        return new HikariDataSource(config); // 返回第三方对象
    }
}