1.ApplicationContext默认在它启动的时候预先实例化singleton beans,这样就可以及时发现bean的依赖配置是否存在问题。可以修改这种默认行为,通过指定bean懒加载。
@Lazy 或者
<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>
2.当某个bean和它所依赖的bean的scope不同时,比如一个是singleton、一个是prototype。处理这种依赖关系可以通过:
1)实现ApplicationContextAware,获取applicationContext,然后每次调用getBean( )方法。
2)Lookup method injection:通过CGLIB字节码生成的方式动态产生子类然后覆写方法