Spring4 In Action-3.2@Scope单例多例Bean

Posted 第二天半

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring4 In Action-3.2@Scope单例多例Bean相关的知识,希望对你有一定的参考价值。

Spring In [email protected]单例、多例Bean

代码下载地址:http://download.csdn.net/download/poiuy1991719/9967494

 

Singleton:单例    
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
@Scope("singleton")

 

Prototype:每次注入都会创建新的  
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Scope("prototype") 

 

 

Session:Web的每一次会话    

 Request:Web的每一次请求

package com.bean.conditional;

import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component("magicBeanName")//重命名:配置类里面的方法与之对应
public class MagicBean {
    private String name="MagicBean";
    public MagicBean() {
        System.out.println("MagicBean:实例化"+this);
    }
    
    public void showName(){
        System.out.println("Show Name is:"+name);
    }
}

 

package com.bean.conditional;

import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;

@Configuration
@ComponentScan(basePackages={"com.bean"})
public class BeanConfigs {

    @Bean
    //Singleton:单例  Prototype:每次注入都会创建新的 Session:Web的每一次会话  Request:Web的每一次请求
//    @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
    @Scope("prototype")
    //@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
//    @Scope("singleton")
    public MagicBean magicBeanName(){//方法名来源,Bean类的注解:@Component("magicBeanName")
        return new MagicBean();
    }
}

 

package test;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.bean.conditional.BeanConfigs;
import com.bean.conditional.MagicBean;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={BeanConfigs.class})
public class test {
    @Autowired
    MagicBean mb;
    
    @Autowired
    MagicBean mb1;

    @Test
    public void selfTest(){
        mb.showName();
        mb1.showName();
    }
}

 

 

也可以通过xml文件配置来实现:

<bean id="magicBean" scope="prototype"></bean>

 





以上是关于Spring4 In Action-3.2@Scope单例多例Bean的主要内容,如果未能解决你的问题,请参考以下文章

Spring4 In Action-5.2.2-Spring Web应用程序-简单的控制器实现跳转

Spring4 In Action-5.2.3-Spring Web应用程序-向页面输出列表接收参数接收表单

Spring4相关jar包介绍(转)

Spring版本功能变更&Spring4.x的新特性

spring in action 4 第6章 视图分发

Spring4.1新特性——Spring缓存框架增强(转)