Q: CGLib是什么
A:
Q: 原型作用域prototype的作用
A: 不管你使用哪种方式来声明原型作用域,每次注入或从Spring应用上下文中检索该bean的时候,都会创建新的实例。这样所导致的结果就是每次操作都能得到自己的Notepad实例。
P: 3.5.2
Q: SpEL是什么?
A:
Q: 在默认情况下,Spring应用上下文中所有bean都是作为以单例(singleton)的形式创建的。
A: 也就是说,不管给定的一个bean被注入到其他bean多少次,每次所注入的都是同一个实例。
Q: @Qualifier注解的用法
A:
Q: 如何避免自动装配时的歧义性
A: 在声明bean的时候,通过将其中一个可选的bean设置为首选(primary)bean能够避免自动装配时的歧义性。
Q: 阻碍Spring自动装配的原因
A: 仅有一个bean匹配所需的结果时,自动装配才是有效的。如果不仅有一个bean能够匹配结果的话,这种歧义性会阻碍Spring自动装配属性、构造器参数或方法参数。
Q: 通过ConditionContext,我们可以做到如下几点:
A:
Q: ConditionContext是一个接口,大致如下所示:
A:
public interface ConditionContext {
BeanDefinitionRegistry getRegistry();
ConfigurableListableBeanFactory getBeanFactory();
Environment getEnvironment();
ResourceLoader getResourceLoader();
ClassLoader getClassLoader();
}
Q: 条件化地配置bean
A: 假设有一个名为MagicBean的类,我们希望只有设置了magic环境属性的时候,Spring才会实例化这个类。如果环境中没有这个属性,那么MagicBean将会被忽略。在程序清单3.4所展现的配置中,使用@Conditional注解条件化地配置了MagicBean。
@Bean
@Conditional(MagicExistsCondition.class) <--- 条件化地创建bean
public MagicBean magicBean(){
return new MagicBean();
}