2 回答

TA贡献1831条经验 获得超9个赞
是一个方法级别的注解,指示 Spring 在调用该方法时创建一个 bean。这意味着具有与 XML 配置中的标记相同的功能。
这个注解必须在 @Configuration 注解的类中使用,否则如果你从另一个方法调用该方法,它将是一个普通的 java new 操作,而不是 spring 的。请参阅这篇文章-> @Bean inside class with @Configuration and witout
牢记这一点 new SomeObject(sqlDataSource()); 将等于 new SomeObject(new SqlDataSource());
如果您使用 @Configuration 注释 Example 将会发生的是,您将始终获得一个具有相同 sqlDataSource 对象的新 SomeObject 实例,这意味着 Spring 将只创建一个 sqlDataSource 因为它是单例的。

TA贡献1765条经验 获得超5个赞
@Bean DataSource sqlDataSource() {
// some logic
}
这定义了 DataSource 的单例实例。因此,每次您请求 SomeObject 的实例时,都会创建一个新的 SomeObject(虽然它是在原型范围内定义的),但它们都将共享相同的 DataSource 对象(因为它是一个单例 bean)。
添加回答
举报