在@Configuration
课堂上,@Bean
像这样的方法
@Bean
@Scope("prototype")
public Thing thing(String name) {
return new Thing(name);
}
用于注册bean定义并提供创建bean的工厂。它定义的bean仅在请求时使用直接或通过扫描确定的参数实例化ApplicationContext
。
对于prototypebean
,每次都会创建一个新对象,因此@Bean也会执行相应的方法。
你可以ApplicationContext
通过的beanfactory#getBean(String name, Object... args)
方法检索Bean
,该方法指出
允许指定显式构造函数自变量/工厂方法自变量,覆盖Bean定义中指定的默认自变量(如果有)。
参数:
如果使用静态工厂方法的显式参数创建原型,则使用args参数。在任何其他情况下,使用非null参数值都是无效的。
换句话说,对于此prototype
作用域的bean,你将提供将要使用的参数,而不是在bean类的构造函数中,而是在@Bean
方法调用中。
对于Spring 4+版本至少是这样。