探究Spring Bean的六种作用域:了解适用场景和使用方式
package com.example.demo.beans;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.web.context.WebApplicationContext;
@Configuration
public class BeanConfig {
// 单例模式(Singleton)
@Bean
public MyBean singletonBean() {
return new MyBean();
}
// 原型模式(Prototype)
@Bean
@Scope(WebApplicationContext.SCOPE_REQUEST)
public MyBean prototypeBean() {
return new MyBean();
}
// 会话模式(Session)
// 通常在Web应用中使用,需要Web环境支持
// 应用模式(Application)
// 通常在Web应用中使用,需要Web环境支持
// Web模式(WebSocket)
// 通常在WebSocket应用中使用,需要WebSocket支持
// 请求模式(Request)
// 通常在Web应用中使用,需要Web环境支持
// 局部模式(Lazy-init)
@Bean
@Lazy
public MyBean lazyBean() {
return new MyBean();
}
}
class MyBean {
// 自定义的Bean逻辑
}
在这个示例中,我们定义了一个简单的配置类BeanConfig
,其中包含了如何定义各种作用域的Bean。MyBean
是一个示例的自定义类,可以包含任何业务逻辑。通过注解@Bean
和@Scope
来指定Bean的作用域。注意,会话和应用作用域需要在Web环境中才能使用,而WebSocket和请求作用域则需要在相应的WebSocket或请求处理上下文中。@Lazy
注解用于指定Bean为懒加载模式。
评论已关闭