BeanFactory: 这是一个工厂,用于生产任意Bean,采用延迟加载,第一次getBean时才会加载
ApplicationContext: 是BeanFactory的一个子接口,功能更强大(国际化处理,事件传递,Bean自动装配,各种不同应用层的Context实现),配置文件一加载,对象就会被加载
ClassPathXMLApplicationContext: 用于加载classpath(类路径、src)下指定的XML
加载XML运行时位置--》WEB-INF/classes/*.XML
FileSystemXMLApplicationContext:用于加载指定盘符下的XML
通过Javaweb ServiceContext.getRealPath()获得具体盘符
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bean的种类
1、普通Bean
<bean id="", class=""></bean>
Spring 直接创建Bean的实例并返回
2、FactoryBean:
是一个特殊的Bean,具有工厂生产对象的能力,只能生产特定的对象。Bean必须实现FactoryBean接口,此接口提供方法 getObject() 用于获得特定Bean
<bean id="", class="FB"></bean>,先创建FB实例,使用调用getObject()方法,并返回方法的返回值。
FB fb = new FB();
return fb.getObject();
3、BeanFactory 和 FactoryBean 对比:
BeanFactory:工厂,用于生产任意Bean
FactoryBean:这是一个特殊的Bean,用于生产另一个特定的Bean的,例如 ProxyFactoryBean:此工厂Bean用于生产代理
<bean id="" class="" ...ProxyFactoryBean>。获得代理对象时使用
作用域:
作用域用于确定Spring 创建Bean的实例的个数
singleton: 单例,默认值
prototype: 多例,每次执行getBean() 方法都将获得一个实例
request:
session:
globalsession: