以下只能用在web server,baeldung文件說實際上很少用
預設是這種,每次從bean取的都是同一個instance
@Bean
@Scope("singleton")
public Person personSingleton() {
return new Person();
}
每次從bean取出的instance,每次都會不一樣,每次都會重新產生一個新的instance。
@Bean
@Scope("prototype")
public Person personPrototype() {
return new Person();
}
每次的request,都會產生一個新的instance,但是在同一個request中,每次從bean取出的instance,都是同一個。
@Bean
@RequestScope
public Person personRequest() {
return new Person();
}
每個session中,每次從bean取出的instance,都是同一個。
@Bean
@SessionScope
public Person personSession() {
return new Person();
}
跟singleton是一樣的,但範圍更廣,這個instance可以被用在同一個servelet context的多的servlet base中
@Bean
@ApplicationScope
public Person personApplication() {
return new Person();
}
當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