我们曾经有办法从类路径上的文件加载属性:
<context:property-placeholder location="classpath:myConfigFile.properties" />
Run Code Online (Sandbox Code Playgroud)
它运作得很好.但是现在我们想要从不在类路径中的系统上的特定文件加载属性.我们希望能够动态加载文件,因此我们使用Java环境变量来填充它.我将在下面举一个简单的例子:
在Java中:
System.setProperty("my.prop.file", "/path/to/myConfigFile.properties");
Run Code Online (Sandbox Code Playgroud)
在Spring XML中:
<context:property-placeholder location="${my.prop.file}" />
Run Code Online (Sandbox Code Playgroud)
我也是这样尝试过的,感谢Luciano的一个想法:
<context:property-placeholder properties-ref="prop" />
<util:properties id="prop" location="reso"/>
<bean id="reso" class="org.springframework.core.io.FileSystemResource">
<constructor-arg index="0" value="${my.prop.file}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
我尝试过的一切都失败了.无论我将my.prop.file设置为什么.最棒的热门歌曲包括:
<context:property-placeholder location="/path/to/myConfigFile.properties" />
(ClassNotFoundException: .path.to.myConfigFile.properties)
<context:property-placeholder location="file:/path/to/myConfigFile.properties" />
(ClassNotFoundException: file:.path.to.myConfigFile.properties)
<context:property-placeholder location="file:///path/to/myConfigFile.properties" />
(ClassNotFoundException: file:...path.to.myConfigFile.properties)
Run Code Online (Sandbox Code Playgroud)
如何使用属性占位符与文件系统上的位置而不是类路径?我们正在使用Spring 3.0.5.
事实证明,运行Java程序的脚本存在加载spring文件的问题.谢谢你的帮忙.我将要求删除此问题,因为原始代码毕竟有效.谢谢您的帮助.
根据javadocjava.util.Scanner.skip,这个方法:
跳过与指定模式匹配的输入,忽略分隔符.
但我对"忽略delimeters"这个短语的含义感到困惑,因为以下代码在Eclipse中使用Java 7引发异常:
import java.util.Scanner;
public class Example
{
public static void main(String [] args)
{
Scanner sc = new Scanner("Hello World! Here 55");
String piece = sc.next();
sc.skip("World"); // Line A throws NoSuchElementException, vs.
sc.skip("\\sWorld"); // Line B works!
sc.findInLine("World"); // Line C works!
}
}
Run Code Online (Sandbox Code Playgroud)
跳过时似乎没有忽略分隔符,如线A所示.但是,即使其文档使用相同的"忽略分隔符"短语,但C行似乎也可以工作.我不明白他们在这种情况下"忽略分隔符"的概念还是这是一个真正的错误?我错过了什么?
在Spring 3.0.2中,我试图将Bean A的属性注入另一个Bean B,但是Spring EL无效.
Bean A是用Java手动创建的.Bean B是通过XML创建的.
在这种情况下,豆A是马铃薯,豆B是婴儿(两者都包装在springinit中).
豆A(马铃薯):
public class Potato {
String potatoType;
public String getPotatoType() { return potatoType; }
public void setPotatoType(String potatoType) { this.potatoType = potatoType; }
@Override
public String toString() {
return "Potato{" + "potatoType=" + potatoType + '}';
}
}
Run Code Online (Sandbox Code Playgroud)
豆B(宝贝):
public class Baby {
private String name;
private Potato potatoThing;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Potato …Run Code Online (Sandbox Code Playgroud)