2014-08-28 1 views
0

Spring 구성 파일을 선택적으로 포함시키는 방법은 무엇입니까?Spring.Net의 선택적 리소스

<spring> 
    <context> 
     <resource uri="file:///Objects/RequiredObjects.xml" /> 
     <resource uri="file:///Objects/OptionalObjects.xml" required="false" /> 
    </context> 

나는 개발자 (응용 프로그램 시작시 로컬 속도 개선 또는 자동 성 예 :)을 일부 구성 부품을 재정의 할 수있는 가능성을 제공 할 수있는이 식으로의 app.config 및 문제에 영향을주지 않고 : 나는이에 대한 시뮬 뭔가에 대해 생각 개발자가 모든 설정을 변경하려는 의도가 아니라면 수정 된 파일을 체크인 할 수 있습니다. AutoFac 같이

답변

0

간단하지 약간의 코드와 비슷한 달성 할 수 있지만, 수 (이미 내장 방법이 있기 때문에) :

using System.IO; 
using System.Xml; 

using Spring.Core.IO; 

    public class OptionalFileSystemResource : FileSystemResource 
    { 
     public OptionalFileSystemResource(string uri) 
      : base(uri) 
     { 
     } 

     public override Stream InputStream 
     { 
      get 
      { 
       if (System.IO.File.Exists(this.Uri.LocalPath)) 
       { 
        return base.InputStream; 
       } 

       return CreateEmptyStream(); 
      } 
     } 

     private static Stream CreateEmptyStream() 
     { 
      var xml = new XmlDocument(); 
      xml.LoadXml("<objects />"); 
      var stream = new MemoryStream(); 
      xml.Save(stream); 
      stream.Position = 0; 

      return stream; 
     } 
    } 

이 섹션 처리기를 등록을 :

<sectionGroup name="spring"> 
    ... 
     <section name="resourceHandlers" type="Spring.Context.Support.ResourceHandlersSectionHandler, Spring.Core"/> 
    ... 
</sectionGroup> 

... 

<spring> 
    <resourceHandlers> 
    <handler protocol="optionalfile" type="MyCoolStuff.OptionalFileSystemResource, MyCoolStuff" /> 
    </resourceHandlers> 

    ... 

<context> 
    <resource uri="file://Config/MyMandatoryFile.xml" /> 
    <resource uri="optionalfile://Config/MyOptionalFile.xml" /> 
    ... 

당신 Spring.Net documentation에서 자원 및 자원 처리기에 대한 자세한 정보를 찾을 수 있습니다.

관련 문제