sping揭秘3Spring容器中bean默认是保持一个实例

Posted cutter_point

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sping揭秘3Spring容器中bean默认是保持一个实例相关的知识,希望对你有一定的参考价值。

Spring容器中bean默认是保持一个实例

 

这里做一个测试,基础代码

 

package cn.cutter.start.provider;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Component;

@Component(value="FXNewsProvider")
public class FXNewsProvider {
    //做个变量用来监控2个对象bean之间的值是否一致,来确认是否是一个对象
    private int testSpring;
    
    public FXNewsProvider() {
        System.out.println("hello IOC");
        ++testSpring;
    } 
    
    
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("配置文件路径");
        FXNewsProvider fxNewsProvider = (FXNewsProvider) ctx.getBean("fXNewsProvider");
    }


    public int getTestSpring() {
        return testSpring;
    }


    public void setTestSpring(int testSpring) {
        this.testSpring = testSpring;
    }
    
    
}

 

测试案例:

 

@Test
    public void test2() {
        
        //测试spring的IOC容器中,默认是保持在IOC容器中只有一个实例
        ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:application-bean.xml");
        FXNewsProvider fxNewsProvider = (FXNewsProvider) ctx.getBean("FXNewsProvider");
        
        System.out.println("第一次获取值:" + fxNewsProvider.getTestSpring());
        
        FXNewsProvider fxNewsProvider2 = (FXNewsProvider) ctx.getBean("FXNewsProvider");
        System.out.println("第二次获取值:" + fxNewsProvider2.getTestSpring());
        
        fxNewsProvider2.setTestSpring(998);
        
        if(fxNewsProvider2 == fxNewsProvider) {
            System.out.println("两次对象一样,值为:" + fxNewsProvider.getTestSpring());
        } else {
            System.out.println(fxNewsProvider.getTestSpring());
            System.out.println(fxNewsProvider2.getTestSpring());
        }
        
    }

最后我们看一下测试结果

 

果然如书中所料。。。

 

 

以上是关于sping揭秘3Spring容器中bean默认是保持一个实例的主要内容,如果未能解决你的问题,请参考以下文章

3Spring EL和Bean的Scope

sping揭秘2关于spring配置文件

sping揭秘8容器内部事件发布

sping揭秘9容器内部事件发布

sping揭秘17@Around,@Introduction

Sping管理bean的原理