当前位置:  开发笔记 > 编程语言 > 正文

将applicationContext拆分为多个文件

如何解决《将applicationContext拆分为多个文件》经验,为你挑选了4个好方法。

将Spring的配置拆分为多个xml文件的正确方法是什么?

目前我有

/WEB-INF/foo-servlet.xml

/WEB-INF/foo-service.xml

/WEB-INF/foo-persistence.xml

web.xml有以下几点:


    Spring MVC Dispatcher Servlet
    intrafest
    
        org.springframework.web.servlet.DispatcherServlet
    
    
        contextConfigLocation
        
            /WEB-INF/foo-*.xml
        
    
    2



    contextConfigLocation
    
            /WEB-INF/foo-*.xml
    




    
        org.springframework.web.context.ContextLoaderListener
    

实际问题:

这种方法是正确/最好的吗?

我真的需要同时指定中的配置位置DispatcherServlet context-param板块?

为了能够引用foo-servlet.xml从中定义的bean,我需要记住foo-service.xml什么?这是否与指定contextConfigLocation有关web.xml

更新1:

我正在使用Spring framework 3.0.我的理解是,我不需要像这样进行资源导入:

  

这是正确的假设吗?



1> eljenso..:

我发现以下设置最简单.

使用DispatcherServlet的默认配置文件加载机制:

在初始化DispatcherServlet时,框架将在Web应用程序的WEB-INF目录中查找名为[servlet-name] -servlet.xml的文件,并创建在那里定义的bean(覆盖用于定义的任何bean的定义)全球范围内的同名).

在您的情况下,只需intrafest-servlet.xmlWEB-INF目录中创建一个文件,而不需要在其中指定任何特定信息web.xml.

intrafest-servlet.xml文件中,您可以使用import来组成XML配置.


  
  

  
  

请注意,Spring团队实际上更喜欢在创建(Web)ApplicationContext时加载多个配置文件.如果您仍然希望这样做,我认为您不需要同时指定上下文参数(context-param) servlet初始化参数(init-param).其中一个会做.您还可以使用逗号指定多个配置位置.


我应该把foo-persistence.xml放在哪里,如何引用它的资源路径?进行战争时,找不到持久性单位。

2> Human Being..:

Mike Nereson在他的博客上说:

http://blog.codehangover.com/load-multiple-contexts-into-spring/

有几种方法可以做到这一点.

1. web.xml contextConfigLocation

您的第一个选择是通过ContextConfigLocation元素将它们全部加载到Web应用程序上下文中.假设您正在编写Web应用程序,那么您已经在这里拥有主要的applicationContext.您需要做的就是在下一个上下文的声明之间放置一些空格.

  
       contextConfigLocation 
      
          applicationContext1.xml
          applicationContext2.xml
      
  

  
      
          org.springframework.web.context.ContextLoaderListener
      
  

以上使用回车.或者,哟可以放入一个空间.

  
       contextConfigLocation 
       applicationContext1.xml applicationContext2.xml 
  

  
       org.springframework.web.context.ContextLoaderListener 
  

2. applicationContext.xml导入资源

您的另一个选择是将主applicationContext.xml添加到web.xml,然后在该主要上下文中使用import语句.

applicationContext.xml你可能有......

  
  

  
  

  
  

你应该使用哪种策略?

1.我总是喜欢通过web.xml加载.

因为,这允许我保持所有上下文彼此隔离.通过测试,我们可以只加载运行这些测试所需的上下文.这使得开发更加模块化,因为组件保持不变loosely coupled,以便将来我可以提取包或垂直层并将其移动到自己的模块.

2.如果要将上下文加载到a中non-web application,我会使用该import资源.


复制文章http://blog.codehangover.com/load-multiple-contexts-into-spring/不引用.

3> 小智..:

我们正在处理两种类型的上下文:

1:根上下文(父上下文.通常包括所有jdbc(ORM,Hibernate)初始化和其他Spring安全相关​​的配置)

2:单独的servlet上下文(子上下文.典型的Dispatcher Servlet上下文并初始化与spring-mvc相关的所有bean(控制器,URL映射等)).

这是web.xml的一个示例,其中包含多个应用程序上下文文件




    Spring Web Application example

    
    
        org.springframework.web.context.ContextLoaderListener
    
    
        contextConfigLocation
        
            /WEB-INF/spring/jdbc/spring-jdbc.xml 
            /WEB-INF/spring/security/spring-security-context.xml 
        
    

    
    
        spring-mvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            
                /WEB-INF/spring/mvc/spring-mvc-servlet.xml
            
        
    
    
        spring-mvc
        /admin/*
    



4> 小智..:

@eljenso:如果应用程序使用SPRING WEB MVC,将使用intrafest-servlet.xml webapplication context xml.

否则@kosoant配置没问题.

如果您不使用SPRING WEB MVC但想要使用SPRING IOC的简单示例:

在web.xml中:


        contextConfigLocation
        classpath:application-context.xml

然后,您的application-context.xml将包含: 这些import语句,用于加载各种应用程序上下文文件并放入主application-context.xml.

谢谢,希望这会有所帮助.

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有