Spring In Action-3.2@Scope单例、多例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>