我需要在我的 Spring MVC 应用程序中读取 java 属性文件,但我找不到这样做的方法。我在 SO 上尝试了类似问题的几个答案,但我没有成功。我是 Java 新手,尤其是 Spring MVC,所以我可能搞砸了。
我不再确定该文件是否已成功部署。我正在使用Tomcat顺便说一句。
我需要在我的 Spring MVC 应用程序中读取 java 属性文件,但我找不到这样做的方法。我在 SO 上尝试了类似问题的几个答案,但我没有成功。我是 Java 新手,尤其是 Spring MVC,所以我可能搞砸了。
我不再确定该文件是否已成功部署。我正在使用Tomcat顺便说一句。
如果您使用的是 Spring 3.1+,则可以使用@PropertySource注释:
@Configuration
@PropertySource("classpath:/com/example/app.properties")
public class AppConfig {
// create beans
}
或者对于基于 XML 的配置,您可以使用<context:property-placeholder>:
<beans>
<context:property-placeholder location="classpath:com/example/app.properties"/>
<!-- bean declarations -->
</beans>
然后您可以使用@Value注释自动装配属性文件中的键:
@Value("${property.key}") String propertyValue;
在Spring 参考文档中阅读更多详细信息。
您可以使用PropertySourcesPlaceholderConfigurer
.
下面是一个PropertySourcesPlaceholderConfigurer
使用 Spring JavaConfig 配置的示例:
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer props = new PropertySourcesPlaceholderConfigurer();
props.setLocations(new Resource[] {
new ClassPathResource("/config/myconfig.properties"),
new ClassPathResource("version.properties")
});
}
这将从类路径上的上述文件中加载属性。
您可以在应用程序中的属性替换中使用这些属性。例如,假设上述文件之一中有一个名为myprop
. 您可以myprop
使用以下方法将 ' 值注入字段:
@Value(${myprop})
private String someProperty;
您还可以通过将 Spring 的Environment
对象注入到您的类中来访问属性的值。
@Resource
private Environment environment;
public void doSomething() {
String myPropValue = environment.getProperty("myprop");
}
为了从 Web 应用程序中读取任何旧文件,Frederic 在上面的评论中发布的链接很好地解释了在尝试从其 war 文件中读取文件时遇到的正常类加载器障碍及其周围的解决方案。
你可以试试下面的代码。
将此添加到 servelt-context.xml
<context:property-placeholder location="classpath:config.properties"/>
并在java中访问配置文件的内容,
@Value("${KEY}")
private String value;