参考
- 《Spring In Action》
- 博文《Spring Auto-Wiring Beans》
- 博文《Spring Auto-Wiring Bean with @Autowired annotation》
我并不想本篇说明Ioc的设计思想,也不想涉及Ioc的源码实现。因为该系列博文只是自己的备忘,所以难免凌乱,若对你有用最好,否则只能说声抱歉,在其他博文中不再重复声明。
本篇分两部分:
- Bean Autowired
- Autowired跟scope的关系
1. Bean Autowired
首先,BeanFactory和ApplicationContext两种方式装载bean实例,前者知道getBean()被调用才载入bean实例,而后者在Spring上下文启动后预载入所有单实例Bean。
参考的两篇博文有详细例子说明如何实现bean的autowired,两种方式:
- 在xml配置文件中加入”autowired“attribute
- 在代码中用注Annotation方式声明,@Autowired
自动装配相比手动装配,缺乏透明性。手动装配,我们直接可以再配置文件中定位清晰定位到注入的field到底对应到哪个bean。
2. Autowired跟scope的关系
Spring容器负责创建维护bean,何时创建何时销毁,需要我们去规定bean的存在范围,直接使用《spring-reference-2.5.6》的:
由于存在scope概念,我们试图通过autowired方式在一个scope=request的bean中注入一个scope=sigleton的对象,是不可能成功的。