Spring4 In [email protected]单例、多例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>
时间: 2024-10-07 05:31:51

Spring4 In [email protected]单例、多例Bean的相关文章

Spring4 In [email&#160;protected]运行时注入值

代码链接: 接口: package com.zte.sound.service.bean; /** * 光盘 */ public interface CompactDisc { public void play(); } 实现类: package com.zte.sound.service.bean.imp; import org.springframework.stereotype.Component; import com.zte.sound.service.bean.CompactDisc

Spring4 In [email&#160;protected]切面

源码下载地址:http://download.csdn.net/download/poiuy1991719/9993015 bean接口: package com.zte.sound.service.bean; /** * 光盘 */ public interface CompactDisc { public void play(); } Bean接口实现类: package com.zte.sound.service.bean.imp; import org.springframework.s

Spring4 In [email&#160;protected]往切面传递参数

//args(trackNumber):表明传给playTrack的int参数,也会传给切入点 @Pointcut("execution(* com.zte.sound.service.bean.CompactDisc.playTrack(int))"+" && args(trackNumber)") public void trackPlayed(int trackNumber){} @After("trackPlayed(trackNu

Spring中构造器、init-method、@PostConstruct、afterPropertiesSet孰先孰后,自动注入发生时间以及单例多例的区别

首先明白,spring的IOC功能需要是利用反射原理,反射获取类的无参构造方法创建对象,如果一个类没有无参的构造方法spring是不会创建对象的.在这里需要提醒一下,如果我们在class中没有显示的声明构造方法,默认会生成一个无参构造方法,但是当我们显示的声明一个有参构造方法的时候,JVM不会帮我们生成无参构造方法,所以我们声明一个带参数的构造方法也需要声明一个无参构造方法.(题外话:如果父类声明一个有参构造方法,子类需要在构造方法第一行显示的调用父类构造方法,因为子类的对象也是父类的对象,所以

单例多例

单例多例需要搞明白两个问题:1. 什么是单例多例:2. 如何产生单例多例:3. 为什么要用单例多例4. 什么时候用单例,什么时候用多例:1. 什么是单例多例:所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action; 2. 如何产生单例多例:    在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype"; 3. 为

web 单例 多例

单例多例需要搞明白两个问题:1. 什么是单例多例:2. 如何产生单例多例:3. 为什么要用单例多例4. 什么时候用单例,什么时候用多例:1. 什么是单例多例:所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action; 2. 如何产生单例多例:    在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype"; 3. 为

mysql Access denied for user [email&#160;protected]错误解决方法总结(转)

mysql Access denied for user [email protected]错误解决方法总结(转) mysql Access denied for user \'root\'@\'localhost\'”解决办法总结,下面我们对常见的出现的一些错误代码进行分析并给出解决办法,有需要的朋友可参考一下. 错误代码 1045 Access denied for user 'root'@'localhost' (using password:YES) 解决办法是重新设置root用户密码,

用 Java 技术创建 RESTful Web 服务/@[email&#160;protected]@PathParam

简介 JAX-RS (JSR-311) 是为 Java EE 环境下的 RESTful 服务能力提供的一种规范.它能提供对传统的基于 SOAP 的 Web 服务的一种可行替代. 在本文中,了解 JAX-RS 的主要组件.本文用一个例子展示了一个企业如何使用 JAX-RS 内的功能以一种 Restful 的方式公开员工的联系信息. 背景 多年来,开发人员使用各种工具在其 Java 应用程序内创建 RESTful 服务.由于 REST 架构的简单性,主要需求 - 接收 HTTP 消息和头部的能力 -

springMVC @[email&#160;protected]@[email&#160;protected]@Controller的区别和理解

作用: @Component------------------------泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注.(Component-------成分; 组分; 零件) @Resource------------------------(资源) @Autowired-----------------------(自动绑定) @Repository-----------------------于标注数据访问组件,即DAO组件(repository-------仓库; 贮藏