尝试从 Spring 中的 WEB-INF 目录读取属性文件时出错
Error trying to read properties file from WEB-INF directory in Spring
在我的 Java 服务中,我正在尝试读取如下属性文件
@Configuration
@ComponentScan(basePackages = { "com.site.xxx.*" })
@PropertySource("classpath:application.properties")
@Service("someService")
public class SomeService {
@Autowired
private Environment env;
...
}
然后在我的一种方法中,我
String closeDate = env.getProperty("close.date");
这里有 2 个问题,我可以解决其中一个问题。
1> 如果我的 application.properties 文件在类路径中,它会以读取文件的方式工作。我把它放在 src/main/resources 下,它会在我部署更改后读取文件,但如果我更改此 属性 文件中的日期,它仍然会显示编译代码时输入的第一个日期.所以阅读部分有效,但当我更改文件内容时它不会改变。
2> 如果我更改下一行的内容
@PropertySource("classpath:WEB-INF/application.properties")
如果我将文件放在我的 WEB-INF 目录下,即使文件存在,它也会显示找不到文件。
我非常希望 #2 可以工作,但如果它无法工作(我不认为是这样),我可以使用 #1,只要它表现得像 属性 文件。
Spring 在容器启动期间加载 属性 文件 ,因此无论何时更改 application.properties
中的 属性,您需要重新启动服务器。因此,这可能是您的选项 (1) 不起作用的原因。
如果您想使用选项 (2),您可以将 PropertySource
配置为 file:
(而不是 classpath:
),如下所示,您需要设置 myproject.home
(或您选择的任何其他名称)作为环境(OS)或系统变量。
@PropertySource("file:${myproject.home}/WEB-INF/application.properties")
Do property file changes usually warrant a server restart?
是的,他们需要重新启动容器。
在我的 Java 服务中,我正在尝试读取如下属性文件
@Configuration
@ComponentScan(basePackages = { "com.site.xxx.*" })
@PropertySource("classpath:application.properties")
@Service("someService")
public class SomeService {
@Autowired
private Environment env;
...
}
然后在我的一种方法中,我
String closeDate = env.getProperty("close.date");
这里有 2 个问题,我可以解决其中一个问题。
1> 如果我的 application.properties 文件在类路径中,它会以读取文件的方式工作。我把它放在 src/main/resources 下,它会在我部署更改后读取文件,但如果我更改此 属性 文件中的日期,它仍然会显示编译代码时输入的第一个日期.所以阅读部分有效,但当我更改文件内容时它不会改变。
2> 如果我更改下一行的内容
@PropertySource("classpath:WEB-INF/application.properties")
如果我将文件放在我的 WEB-INF 目录下,即使文件存在,它也会显示找不到文件。
我非常希望 #2 可以工作,但如果它无法工作(我不认为是这样),我可以使用 #1,只要它表现得像 属性 文件。
Spring 在容器启动期间加载 属性 文件 ,因此无论何时更改 application.properties
中的 属性,您需要重新启动服务器。因此,这可能是您的选项 (1) 不起作用的原因。
如果您想使用选项 (2),您可以将 PropertySource
配置为 file:
(而不是 classpath:
),如下所示,您需要设置 myproject.home
(或您选择的任何其他名称)作为环境(OS)或系统变量。
@PropertySource("file:${myproject.home}/WEB-INF/application.properties")
Do property file changes usually warrant a server restart?
是的,他们需要重新启动容器。