【发布时间】:2018-02-15 16:28:47
【问题描述】:
我是 Spring-Boot 应用程序的新手,并试图在我的 Spring Boot 应用程序中读取外部属性文件,该文件位于我的 resource 文件夹中,除了 application.properties,但出现以下异常,
Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.test.config.MyInetgrationApplicationConfig]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/myIntegration.properties]
2017-09-06 17:27:04.866 ERROR 10512 --- [ost-startStop-1] o.s.b.f.s.DefaultListableBeanFactory : Destroy method on bean with name 'org.springframework.boot.autoconfigure.internalCachingMetadataReaderFactory' threw an exception
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@225fa519: startup date [Wed Sep 06 17:27:04 IST 2017]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:414) [spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.context.support.ApplicationListenerDetector.postProcessBeforeDestruction(ApplicationListenerDetector.java:97) ~[spring-context-4.3.10.RELEASE.jar:4.3.10.RELEASE]
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:253) ~[spring-beans-4.3.10.RELEASE.jar:4.3.10.RELEASE]
我的Config类如下,
@Configuration
@PropertySource(name="myIntegrationProperties", value ="myIntegration.properties")
public class MyInetgrationApplicationConfig {
/**
* Rest template.
*
* @return the rest template
*/
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Value("${datasource.name}")
private String dataSourceName;
@Value("${datasource.driver}")
private String dataSourceDriver;
@Value("${datasource.url}")
private String dataSourceUrl;
@Value("${datasource.username}")
private String dataSourceUserName;
@Value("${datasource.password}")
private String dataSourcePassword;
@Bean
@Primary
public DataSource dataSource() {
DataSource dataSource = new DataSource();
dataSource.setName(dataSourceName);
dataSource.setUrl(dataSourceUrl);
dataSource.setDriverClassName(dataSourceDriver);
dataSource.setUsername(dataSourceUserName);
dataSource.setPassword(dataSourcePassword);
return dataSource;
}
}
我的应用程序类,
@SpringBootApplication(scanBasePackages = { "com.test" })
public class MyInetgrationApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MyInetgrationApplication.class);
}
}
【问题讨论】:
标签: java spring spring-boot properties