作用域 | 描述 |
---|---|
singleton | 在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认的作用域 |
prototype | 每次从容器中调用Bean时,都返回一个新的实例,即每次调用getBean()时,相当于执行newXxxBean() |
request | 每次HTTP request都会创建一个新的Bean,该作用域仅适用于WebApplicationContext环境 |
session | 同一个HTTP Session共享一个Bean,不同Session使用不同的Bean,仅适用于WebApplicationContext环境 |
global-session | 一般用于Portlet应用环境,该作用域仅适用于WebApplicationContext环境 |
@Component
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)//将作用域设定为prototype
//@Scope("prototype")
public class MassageService {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
使用@Scope注解来设置作用域
a.
b.
@Scope("prototype")
在spring boot里面,使用@Configuration(proxyBeanMethods = " ") 来设置作用域
proxyBeanMethods = true:单例模式
proxyBeanMethods = false:多例模式
这里的生命周期针对的是singleton Bean
(图源网络)
FactoryBean是一个接口,需要创建一个类实现该接口
FactoryBean里面有三个方法:
getObject( ):通过一个对象交给IOC容器管理
getObjectType():设置所提供对象的类型
isSingleton():所提供的对象是否为单例
当把FactoryBean的实现类配置为bean时,会将当前类中getObject( )所返回的对象交给IOC容器管理。后期在SqlSessionFactory中会经常用到这种原理