我有一个属性文件myprops.properties如下:
Wsdl=someurl
UserName=user
UserPassword=pasword
Application=appName
在我的控制器内部,我正在尝试访问我的服务中的设置值,如下所示
Properties prop = new Properties();
prop.load(new FileInputStream("resources/myprops.properties"));
myService.setWsdl(prop.getProperty("Wsdl"));
myService.setUserName(prop.getProperty("UserName"));
myService.setUserPassword(prop.getProperty("UserPassword"));
myService.setApplication(prop.getProperty("Application"));
我的问题是我只是不知道使用什么路径。它是一个Spring项目,如果这有任何区别。和Idealy我想在我的“src / main / resources”文件夹
中有属性文件我意识到这可能对某些人来说非常简单,但我已经尝试在这里和Google上搜索解决方案,而我似乎无法找到有帮助的解决方案。我试过在项目周围移动文件,但似乎无法弄明白
我得到的错误是
java.io.FileNotFoundException: resources\drm.properties (The system cannot find the path specified)
任何建议/解释,甚至是明确解释它的链接都会很棒
答案 0 :(得分:1)
鉴于src/main/resources
在类路径上,您可以这样做:
Resource resource = new ClassPathResource("/myprops.properties");
Properties props = PropertiesLoaderUtils.loadProperties(resource);
答案 1 :(得分:1)
如果您使用的是spring,则可以设置属性占位符。
<context:property-placeholder location="classpath:resources/myprops.properties" />
并且在您的bean中,您可以使用@Value
注释从属性中注入值
@Autowired
public Foo(@Value("${Wsdl}") String wsdl) {
...
}
在我在构造函数中使用的上述情况中,但它可以由Autowired字段/ setter使用。
因此,在您的服务中,您可以拥有类似的内容:
@Service
public class MyService {
private final String wsdl;
private final String username;
private final String password;
private final String application;
@Autowired
public MyService(
@Value("${Wsdl}") String wsdl,
@Value("${UserName}") String username,
@Value("${UserPassword}") String password,
@Value("${Application}") String application
) {
// set it to each field.
}
}
答案 2 :(得分:1)
好吧,src / main / resources在classpath上,你只需要这样做。
属性属性= PropertiesLoaderUtils.loadAllProperties(“您的属性文件名”);
答案 3 :(得分:0)
不要使用FileInputStream
;使用getResourceAsStream()
从servlet上下文中读取它。
答案 4 :(得分:0)
你总是可以依靠mkyong。这是关于如何加载和读取属性文件的示例/教程。
http://www.mkyong.com/java/java-properties-file-examples/
此问题应标记为重复: