3

我需要在我的 Spring MVC 应用程序中读取 java 属性文件,但我找不到这样做的方法。我在 SO 上尝试了类似问题的几个答案,但我没有成功。我是 Java 新手,尤其是 Spring MVC,所以我可能搞砸了。

我不再确定该文件是否已成功部署。我正在使用Tomcat顺便说一句。

4

3 回答 3

10

如果您使用的是 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 参考文档中阅读更多详细信息。

于 2013-10-08T18:04:00.370 回答
2

您可以使用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 文件中读取文件时遇到的正常类加载器障碍及其周围的解决方案。

于 2013-10-08T16:31:07.633 回答
0

你可以试试下面的代码。

将此添加到 servelt-context.xml

<context:property-placeholder location="classpath:config.properties"/>

并在java中访问配置文件的内容,

@Value("${KEY}")
private String value;
于 2017-01-14T16:04:59.263 回答