我有一个带有配置文件的Spring.NET程序。为了平滑从测试到产品的转换,我想要一个环境变量,它提供共享配置文件的路径,并将其用于import a resource,但是<import resource="path"/>
似乎不是<import resource="\\server\share\${computername}\SpringConfig.xml"/>
{3}}。例如,如果我尝试加载文件{{1}},我会收到一个未找到文件的异常,如下所示:
System.Configuration.ConfigurationErrorsException:创建上下文'spring.root'时出错:文件[\ server \ share \ $ {computername} \ SpringConfig.xml]无法解析为本地文件路径 - 资源不使用'file:'协议。 ---&GT; Spring.Objects.Factory.ObjectDefinitionStoreException:从文件[\ server \ share \ $ {computername} \ SpringConfig.xml] ---&gt;解析XML文档的IOException System.IO.FileNotFoundException:文件[\ server \ share \ $ {computername} \ SpringConfig.xml]无法解析为本地文件路径 - 资源不使用'file:'协议。
有没有办法在Spring.NET中拥有动态导入路径,最好不用编写代码?
答案 0 :(得分:4)
无论如何,您可以使用一些额外的代码来执行此操作:
创建自己的FileSystemResource,替换资源名称中的占位符。从覆盖现有的FileSystemResource开始(在Spring.Core.IO命名空间中)
使用您自己的协议名称在容器中注册新的IResource实现(例如:myfile://)请参阅这里的ref docs以获取示例:
使用它! 资源= “MYFILE:// \服务器\共享\ $ {计算机名} \ SpringConfig.xml”
答案 1 :(得分:1)
我认为我们不能用当前版本来做到这一点。 最新的Java版本支持它,因此我们可以在将来的版本中使用此功能(默认情况下使用变量环境)