发布网友 发布时间:2022-04-22 04:31
共1个回答
热心网友 时间:2023-08-22 03:45
BeanFactory factory = new XmlBeanFactory(resource); 3:ApplicationContext context = new ClassPathXmlApplicationContext( new String[] {"applicationContext.xml", "applicationContext-part2.xml"}); BeanFactory factory = (BeanFactory) context;详细展开 : 一:org.springframework.core.io包中主要是各样的Resource类 1:类名是斜体的表示是抽象类,正体的表示普通类2:3: 温昱说图org.springframework.core.io包中主要是各样的Resource类,Spring的 Resource 接口是为了提供更强的访问底层资源能力的抽象。相当巧妙的地方在于,为何AbstractResource的子类有的override了getFile()而有的没有?这是因为在AbstractResource的getFile()方法设计为抛出异常,如果子类没有重写此方法,说明子类不支持通过绝对路径查找资源的方式,而override的子类则提供自己的实现。这里通过类的层次设计,充分利用继承带来的优点,避免了大量的条件语句。 二:关于 org.springframework.beans.factory 包和 org.springframework.context 包: 1:BeanFactory 是个接口,LifecycleBean 是个类它负责管理bean的生命周期,它实现了4个接口,并且有一个 BeanFactory 类型的变量 owningFactory org.springframework.beans.factory包下面的 而是 org.springframework.beans.factory.xml下面的 2。 ApplicationContext 也是个接口,它继承的 ListableBeanFactory 接口 又 继承 BeanFactory 接口 public interface ApplicationContext extends ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher, ResourcePatternResolver { }public interface ListableBeanFactory extends BeanFactory { } Spring的bean包支持通过编码方式管理和操作bean的基本功能,ApplicationContext则以Framework的方式提供BeanFactory的所有功能。使用 ApplicationContext,你可以让系统加载你的bean,例如: 在Servlet容器初始化ContextLoaderServlet时,通过ContextLoader类加载Spring Framework),而不是使用编码方式来加载。