我使用Spring MVC與java配置。Spring MVC:如何從WEB-INF加載@PropertySource
而且我有兩個上下文配置類:RootContext
和ServletContext
。
RootContext類在web.xml
這裏通過<context-param>
加載是RootContext的代碼:
@Configuration
@EnableTransactionManagement
@Import(DaoConfig.class)
@PropertySource("/WEB-INF/config/application.properties")
public class RootContext {
@Autowired
private Environment env;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
dataSource.setUrl(env.getProperty("jdbc.url"));
dataSource.setUsername(env.getProperty("jdbc.username"));
dataSource.setPassword(env.getProperty("jdbc.password"));
return dataSource;
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
}
如果我運行應用程序,我得到這個錯誤:
java.io.FileNotFoundException: class path resource [WEB-INF/config/application.properties] cannot be opened because it does not exist
如果我將application.properties
文件移動到類路徑,一切正常。但我希望它位於/ WEB-INF/config目錄中。
任何建議如何解決這個錯誤?
我應該把@PropertySource("/WEB-INF/config/application.properties")
行改爲ServletContext而不是RootContext?
謝謝。
使用catalina.home將會是Tomcat特有的:-( – 2013-07-01 10:29:56
我們可以直接在@ PropertySource裏面使用'$ {catalina.home}'嗎? – 2015-08-16 19:38:20