Spring中Bean的作用域(5种作用域详解)

Spring中Bean的作用域(5种作用域详解)-mikechen

Spring框架支持5种Bean作用域,下面我就分别来详解5大Spring中Bean的作用域@mikechen

1.单例作用域(Singleton)

在整个应用程序中只有一个Bean实例,并由Spring容器创建和管理,默认情况下,所有的Bean都是单例的。

可以通过在@Bean注解中指定@Scope注解的值为”singleton”来显式地指定Bean的作用域为单例作用域。

如下所示:

@Bean
@Scope("singleton")
public MySingletonBean mySingletonBean() {
    // bean instantiation and configuration
    return new MySingletonBean();
}

 

2.原型作用域(Prototype)

原型作用域,在每次对Bean执行请求时,都会创建一个新的Bean实例,这意味着每次调用getBean()方法时都会返回一个新的实例。

可以通过在@Bean注解中指定@Scope注解的值为”prototype”来指定Bean的作用域为原型作用域。

@Bean
@Scope("prototype")
public MyPrototypeBean myPrototypeBean() {
    // bean instantiation and configuration
    return new MyPrototypeBean();
}

 

3.会话作用域(Session)

在Web应用程序中,为每个会话创建一个Bean实例,同一个会话中的所有请求都共享同一个Bean实例。

可以通过在@Bean注解中指定@Scope注解的值为”session”来指定Bean的作用域为会话作用域。

@Bean
@Scope("session")
public MySessionBean mySessionBean() {
    // bean instantiation and configuration
    return new MySessionBean();
}

 

4.请求作用域(Request)

在Web应用程序中,为每个请求创建一个Bean实例,同一个请求中的所有Bean引用都共享同一个Bean实例。

可以通过在@Bean注解中指定@Scope注解的值为”request”来指定Bean的作用域为请求作用域。

@Bean
@Scope("request")
public MyRequestBean myRequestBean() {
    // bean instantiation and configuration
    return new MyRequestBean();
}

 

5.全局会话作用域(GlobalSession)

在基于Portlet的Web应用程序中使用,为每个全局会话创建一个Bean实例。

可以通过在@Bean注解中指定@Scope注解的值为”globalSession”来指定Bean的作用域为全局会话作用域。

@Bean
@Scope("globalSession")
public MyGlobalSessionBean myGlobalSessionBean() {
    // bean instantiation and configuration
    return new MyGlobalSessionBean();
}

以上就是Spring中Bean的作用域详解,更多Spring请查看:Spring教程(史上最全图文详解)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法