SpringBoot Bean类型

SpringBoot Bean类型

按作用域分

根据作用域的不同,Bean可以分为以下六种类型

  1. Singleton(单例模式):Spring容器中只会创建一个Bean实例,所有对该Bean的请求均返回同一个实例。这是默认的作用域。

    @Configuration
    public class MyConfig{
        @Bean
        @Scope("singleton")
        public Bill getBillBean(){
            return new Bill();
        }
    }
    // 或者
    @Component
    @Scope("singleton")
    public class Bill(){
        //...
    }
    

    ℹ️ singleton字符串也可使用ConfigurableBeanFactory.SCOPE_SINGLETON替代

  2. Prototype(原型模式):每次请求该Bean时,都会创建一个新的Bean实例。因此,该Bean的生命周期和请求周期相同。

    @Configuration
    public class MyConfig{
        @Bean
        @Scope("prototype")
        public Bill getBillBean(){
            return new Bill();
        }
    }
    // 或者
    @Component
    @Scope("prototype")
    public class Bill(){
        //...
    }
    

    ℹ️ prototype字符串也可使用ConfigurableBeanFactory.SCOPE_PROTOTYPE替代

  3. Request:每个HTTP请求均会创建一个新的Request Bean实例,该Bean的生命周期将与HTTP请求的生命周期相同。仅在Web应用程序上下文中才有意义。Controller处理一个HTTP请求时,任何标记为@Scope("request")的Bean(即Request作用域的Bean)都将在整个请求的生命周期内可用。这意味着从请求开始到请求结束,包括在Controller内部处理逻辑、调用Service层、Repository层等过程中,Request作用域的Bean将保持一致,可以被自由地使用。

    @Component
    @Scope("request")
    public class AppRequestBean {
        // ...
    }
    // 或者
    @Configuration
    public class WebConfig {
        @Bean
        @Scope("request")
        public AppRequestBean appRequestBean() {
            return new AppRequestBean();
        }
    }
    

    ⚠️注意点

    • Request作用域的Bean实例在请求结束时被销毁
    • Request bean是线程安全的
  4. Session:每个HTTP Session都会创建一个新的Bean实例,该Bean的生命周期将与HTTP Session的生命周期相同,注意哈!并不是session。仅在Web应用程序上下文中才有意义。

    @Component
    @Scope("session")
    public class AppSessionBean {
        // ...
    }
    // 或者
    @Configuration
    public class WebConfig {
        @Bean
        @Scope("session")
        public AppSessionBean appSessionBean() {
            return new AppSessionBean();
        }
    }
    
  5. Global Session:该作用域仅适用于基于Portlet的Web应用程序,它表示Portlet应用程序的全局Session范围内创建Bean实例。

  6. Application:Spring 4.2引入的Scope,类似于Singleton,作用域对象是ServletContext,不是Spring容器。

按性质分

Spring中的Bean可以分为以下两种类型

  1. 普通Bean:在配置文件中定义的Bean类型就是返回类型。这是最常见的Bean类型,直接对应到Java中的一个类或接口的实现。
  2. Factory Bean:实现了FactoryBean接口的Bean。Factory Bean的返回对象不指定类的一个实例,而是生产其他Bean
posted @   勤匠  阅读(20)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示