《Spring in action》之高级装配

1.Spring 通过配置profile bean、激活profile来设置对应环境。
配置profile bean:
可通过@Profile("dev")注解进行配置、也可以通过xml配置。
激活profile:方法有很多
常用:作为DispatcherServlet初始化参数,例如在web.xml中的<context-param>中配置
 
2.处理自动装配的歧义性
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = PhoneConfig.class)
public class PhoneTest {
    
    @Autowired
    @Qualifier("huawei")
    private Phone phone;

    @Test
    public void checkPhone(){
        phone.speak();
        Assert.assertNotNull(phone);
    }
}

  

当phone接口有多个实现时只用 @Autowired是有问题的还需要使用限定符 @Qualifier("huawei")、“huawei“这个是bean的id。
3.Bean的作用域
单例(Singleton):整个应用一个实例
原型(Prototype):每次注入或通过上下文获取时创建一个新的实例
会话(Session):为每个会话创建一个实例
请求(Request):为每个请求创建一个实例
 
组件扫描中:@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@Component
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class Apple implements Phone{
    @Override
    public void speak() {
        System.out.println("apple speak");
    }
}

  

xml配置:scope="prototype"
<bean id="playUtil" class="com.spring.aop.PlayUtil" scope="prototype"/>

使用会话和请求作用域很适合购物车场景、购物车bean应该是1个会话一个

原文地址:https://www.cnblogs.com/monkjavaer/p/9715886.html