文章目录
一、背景
这篇文章来看类:org.springframework.context.annotation.Bean
。
二、@Bean
作用于方法上。
问题:所以这个注解是要在更小的维度上去操控 bean 吗?

被@Bean 修饰的方法代表的语义是什么?
框架中称这种方法为BeanMethod
(org.springframework.context.annotation.BeanMethod)。
@Bean 就是工厂方法的体现。
每个 BeanMethod 就是一条生产线,生产单一产品,汇总在@Configuration 类中就是个大工厂,可以生产很多种产品。
不同的 BeanMethod 之间可以互相调用。
三、生命周期
和普通 bean 的初始化优先级是怎样的?
三、bean 名称
生成的 bean 的名称是如何来的?
默认情况下,BeanMethod 生成的 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); // 返回第三方对象
}
}