MyLibrary 问题分析(一)-Sring2.0多配置文件整合

 下过雪的学校看起来就是不一样~~特别是像我这样起得很早的人...宽阔的路上熙熙攘攘的几个人,远处雪白的美景一览无余,怎么说呢,真希望时间永远停留在那一刹那。扯远了......还是喜欢早上写BOLG的感觉。


 开发的系统因为使用了Spring2.0,所以涉及到了多配置文件的问题,虽然对我个人开发没有多大的帮助,但是团体开发却少不了这个东西。


 下面就来讲讲我所涉及到的多配置文件



  1. 普通:  因为是Web Protect 而且是自下而上开发,所以没有界面可以测试,只能自己开个Main Class测试, 这回它就成了一个普通的Java Protect, 如何导入多XML,我看了Spring2.0的API, 发现 ApplicationContext的构造函数居然有N个,除却最基本的单XML导入,还看到了一种导入数组的形式。 哈, 马上试试。发现居然成功了:

                

               

String[] configLocations = {"applicationContext-main.xml","applicationContext-hibernate.xml"};
ApplicationContext context = new ClassPathXmlApplicationContext(configLocations);

 

  

   2. Web: 如果在Web上整合, 那么只需配置Web.xml,,如:

                  

    <context-param>

<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value> 
</context-param>

<listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>

 

    其中 applicationContext-*.xml 是一种通配符的形式, 你也可以写完整的.....

  

    3. 在网上查了一下,发现还有几种形式, 但是比较之下发现并不实用:

    

        把几个配置文件写在一个配置文件里,如:

        <beans>

<bean id="default" class="org.springframework.context.support.ClassPathXmlApplicationContext"> 
<constructor-arg> 
<list> 
<value>applicationContext.xml</value> 
<value>applicationContext-business.xml</value> 
<value>applicationContext-scheduler.xml</value> 
</list> 
</constructor-arg> 
</bean> 
</beans>

 

    然后在web.xml文件中,使用自己定义一个ContextLoaderServlet来启动,这个ContextLoaderServlet         可以继承HttpServlet,然后在它的init()方法里取得BeanFactory,代码如下:

 

    

public class ContextLoaderServlet extends HttpServlet { 
      public ContextLoaderServlet() 
      { 
      }
      public void init() throws ServletException 
      { 
       //这个参数里的名字就是我们在BeanRefFactory.xml里定义的bean的名字。 
       DefaultBeanFactory.getFactory("default"); 
      }
      public void destroy() 
      { 
      } 
}

  

   然后定义一个DefaultBeanFactory类: 

   

public class DefaultBeanFactory { 
  protected static final BeanFactory getFactory(String s) 
  { 
     BeanFactoryLocator beanfactorylocator =SingletonBeanFactoryLocator.getInstance(); 
     BeanFactoryReference beanfactoryreference = beanfactorylocator.useBeanFactory(s); 
    return beanfactoryreference.getFactory(); 
} 
}

 


     最后在web.xml文件中配置如下: 

<servlet> 
<servlet-name>context</servlet-name> 
<servlet-class>com.lixh.web.servlet.ContextLoaderServlet</servlet-class> 
<load-on-startup>1</load-on-startup> 
</servlet>

 

     这种方式改动较多,也比较麻烦,但是可以根据自己的需要随机加载信息。

 


 

 

你可能感兴趣的:(bean,Hibernate,Web,xml,servlet)