spring注解@scope(废弃)

介绍

@scope相当于传统application-config.xml配置文件中<bean scope>中的scope属性

<bean id="XXX" class="com.XXX.XXXXX" scope="XXXX" />

scope称:作用域,在 Spring IoC 容器是指其创建的 Bean 对象相对于其他 Bean 对象的请求可见范围。

在 Spring IoC 容器中具有以下几种作用域:

  • 基本作用域(singleton、prototype)
  • Web 作用域(reqeust、session、globalsession)
  • 自定义作用域

详细解释

  • prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例

  • singleton:默认值,单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例

  • request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效

  • session:对于每次HTTP Session,使用session定义的Bean都将产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效

  • globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效

例子

搭配@bean注解使用

@Configuration  
public class ApplicationConfig {  
        @Bean
        @Scope("prototype")
        public OrderService orderService() {  
                return new OrderService(orderRepository());  
        }  
}

https://blog.csdn.net/Tracycater/article/details/54019223