2009年3月5日星期四

Spring:IOC容器 - 基本原理(容器和bean)

1.BeanFactory还是ApplicatonContext?
答:BeanFactory接口擅长于处理bean的初始化和配置,提供了配制框架及基本功能;ApplicationContextBeanFactory的扩展,功能得到了进一步增强,比如更易 与Spring AOP集成、资源处理(国际化处理)、事件传递及各种不同应用层的context实现 (如针对web应用的WebApplicationContext)。简而言之,一般把ApplicationContext接 口作为首选。

2.
为什么使用bean?

答:使用'bean'这个名字而不是'组件'(component)'对象'(object)的动机 源于Spring框架本身(它产生的部分原因就是对Enterprise Java Beans复杂性的一次解构)。

3.多种资源加载配置元数据

答:Spring IoC容器可以通过多种途径来加载配置元数据,比如本地文件系统、Java CLASSPATH等。Resource抽象机制。

4.怎么实例化容器?

答:ApplicationContext context = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "daos.xml"});

// an ApplicationContext is also a BeanFactory (via inheritance)
BeanFactory factory = context;

XML配置元数据的结构:相对路径

5.bean的在Spring IOC 容器中怎么定义的?
答:bean定义由BeanDefinition 对象来表示。包括全限定类名、bean行为的定义、对其他bean的引用、
创建bean实例时的其他配置设置。他们被映射为中的properties:
class-类名,name-名字,scope-作用域,constructor arguments - 构造器参数,properties - 属性,autowiring mode
自动装配,dependency checking mode - 依赖检查,lazy-initialization mode - 初始化延迟,
initialization method - 初始化方法, destruction method - 析构方法。

6.bean的命名、 bean的别名?
答:bean的命名采用标准的Java命名约定,即小写字母开头,首字母大写间隔 的命名方式。如accountManageraccountService
userDaologinController,等等。
xml配置别名

7.实例化bean的方式?
答:
1)用构造器来实例化。
IoC容器不仅限于管理JavaBean,它可以管理任意 的类。
2)使用静态工厂方法实例化。
createInstance()必须是一个static方法。
3)使用实例工厂方法实例化。

8.使用容器

从本质上讲,BeanFactory仅仅只是一个 维护bean定义以及相互依赖关系的高级工厂接口。通过BeanFactory 我们可以访问bean定义。下面的例子创建了一个bean工厂,此工厂 将从xml文件中读取bean定义:

Resource res = new FileSystemResource("beans.xml"); BeanFactory factory = new XmlBeanFactory(res);

基本上就这些了,接着使用getBean(String) 方法就可以取得bean的实例;BeanFactory 提供的方法极其简单。 BeanFactory接口提供 了非常多的方法,但是对于我们的应用来说,最好永远不要调用它们,当然也包括 使用getBean(String)方法,这样可以避免我们对 Spring API的依赖。

没有评论: