spring mvc properties - java.io.FileNotFoundException:config.properties(系统找不到指定的文件)

时间:2017-11-17 07:50:10

标签: java spring hibernate

我已经创建了一个属性文件并尝试在我的spring DAO类文件中访问它,但是得到“java.io.FileNotFoundException:config.properties(系统找不到指定的文件)”。我尝试过不同的方案将文件放在不同的文件夹/位置但遇到同样的问题。任何人都可以帮我这个。以下是代码和结构细节,

在DAO课程中,

FileReader reader = new FileReader("config.properties");
Properties properties = new Properties();
properties.load(reader);

我尝试将“config.properties”文件放在 src / main / resources 下以及WEB-INF/下。我的DAO课程在src/main/java/com/test/dao 在此先感谢。

2 个答案:

答案 0 :(得分:1)

您可以将文件保存在最合适的 src / main / resources 中,并将其检索方式更改为:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("config.properties").getFile());
FileReader reader = new FileReader(file);

答案 1 :(得分:0)

如果您尝试读取属性文件,则最佳实践是将其保存在 src / main / resources 文件夹中,该文件夹是spring的属性文件的默认位置。您可以使用批注读取属性文件中的值,该文件会自动读取并注入。

通过使用@value注释:

@Value( "${jdbc.url:aDefaultUrl}" )
private String jdbcUrl;

注意:您还可以在此处指定默认值。

通过使用xml配置:

<bean id="dataSource">
<property name="url" value="${jdbc.url}" />
<bean>

通过使用@PropertySource批注:

@Configuration
@PropertySource("classpath:foo.properties")
public class PropertiesWithJavaConfig {
//...
}

在这里您可以提供要在类中映射的键,它将自动映射到字段。

您还可以指定多个属性文件,例如:

@PropertySources({
@PropertySource("classpath:foo.properties"),
@PropertySource("classpath:bar.properties")
})

注意:请记住,要使其正常工作,属性文件应具有扩展名,例如 .properties ,并且属性文件中的值应遵循属性文件约定。