iT邦幫忙

0

Spring 的 Bean 的6種scope

  • 分享至 

  • xImage
  •  

Spring 的 Bean 的6種scope

  • singleton (default)
  • prototype

以下只能用在web server,baeldung文件說實際上很少用

  • request
  • session
  • application
  • websocket

singleton

預設是這種,每次從bean取的都是同一個instance

@Bean
@Scope("singleton")
public Person personSingleton() {
    return new Person();
}

prototype

每次從bean取出的instance,每次都會不一樣,每次都會重新產生一個新的instance。

@Bean
@Scope("prototype")
public Person personPrototype() {
    return new Person();
}

request

每次的request,都會產生一個新的instance,但是在同一個request中,每次從bean取出的instance,都是同一個。

@Bean
@RequestScope
public Person personRequest() {
    return new Person();
}

session

每個session中,每次從bean取出的instance,都是同一個。

@Bean
@SessionScope
public Person personSession() {
    return new Person();
}

application

跟singleton是一樣的,但範圍更廣,這個instance可以被用在同一個servelet context的多的servlet base中

@Bean
@ApplicationScope
public Person personApplication() {
    return new Person();
}

websocket

當websocket第一次連線時建立,跟singleton是一樣的,但只存在這個websocket session內

@Bean
@Scope(scopeName = "websocket", proxyMode = ScopedProxyMode.TARGET_CLASS)
public Person personWebsocket() {
    return new Person();
}


@Bean是用在method的annotation,將method回傳的instance存成一個Bean


reference
https://www.baeldung.com/spring-bean-scopes


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言