Spring scope 配置

Posted 静! 非淡泊无以明志,非宁静无以致远!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring scope 配置相关的知识,希望对你有一定的参考价值。

Scope 描述的是 Spring 容器如何新建Bean的实例,Spring的Scope有以下几种,通过@Scope来注解实现:

1. Singleton: 一个Spring容器中只有一个Bean的实例。

2. Prototype: 每次调用新建一个Bean的实例。

3. Request: Web项目中,给每一个http request新建一个Bean的实例。

4. Session: Web项目中,给每一个http session新建一个Bean的实例。

5. GlobalSession: 给每一个global http session新建一个Bean实例。

 

例: singleton 和 Prototype 区别:

1. 编写 Singleton 的 Bean类

package com.cz.scope;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

/**
 * Created by Administrator on 2017/5/11.
 */
@Service
public class DemeSingletonService {
}

 

 

2. 创建 Prototyped 的 Bean类

package com.cz.scope;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;

/**
 * Created by Administrator on 2017/5/11.
 */
@Service
@Scope("prototype")
public class DemoPrototypeService {

 

 

3. 创建 Scope java配置类

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

/**
 * Created by Administrator on 2017/5/11.
 */
@Configuration
@ComponentScan("com.cz.scope")
public class ScopeConfig {
}

 

 

4. 创建测试类

 

package com.cz.scope;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * Created by Administrator on 2017/5/11.
 */
public class TestScope {

    public static void main(String[] args) {

        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ScopeConfig.class);
        DemeSingletonService s1 = context.getBean(DemeSingletonService.class);
        DemeSingletonService s2 = context.getBean(DemeSingletonService.class);

        DemoPrototypeService p1 = context.getBean(DemoPrototypeService.class);
        DemoPrototypeService p2 = context.getBean(DemoPrototypeService.class);

        System.out.println("s1 equals s2 = " + s1.equals(s2));
        System.out.println("p1 equals p2 = " + p1.equals(p2));
    }
}

 

 

5. 执行结果,可以看出 single创建的两次对象是相同的,而prototype创建的两次对象是不同的

 

以上是关于Spring scope 配置的主要内容,如果未能解决你的问题,请参考以下文章

Spring常用配置 --- Bean的Scope

spring中bean的scope属性理解

spring Bean 配置中scope 和 lazy-init

Spring boot 配置热部署(两步即可)

Spring boot 配置热部署(两步即可)

spring bean的生命周期是怎样的,代码示例