应用在 tomcat 上启动时解析系统属性
Resolving system properties when app starts on tomcat
所以我有我的 spring bott 应用程序:
@Configuration
@PropertySource("${configuration.file}")
public class Application extends SpringBootServletInitializer implements CommandLineRunner {
...
public static void main(String[] args) throws IOException {
SpringApplication app = new SpringApplication(Application.class);
System.setProperty("configuration.file","file:"+"path to my file");
app.run(args);
}
...
当我 运行 我在 windows configuration.file 上的应用程序设置正确但是当我 运行 在 tomcat 服务器上我得到:
Could not resolve placeholder 'configuration.file' in string value "${configuration.file}"
问题的原因可能是什么?
很明显,这是由于定义的@PropertySource 注释存在问题。您需要定义要在该注释中定义的 属性 文件的实际内容,例如 xyz.properties。你也可以在那里给占位符。理想的做法是,
@Configuration
@PropertySource("classpath:/com/${my.placeholder:default/path}/app.properties")
public class AppConfig {
@Autowired
Environment env;
@Bean
public TestBean testBean() {
TestBean testBean = new TestBean();
testBean.setName(env.getProperty("testbean.name"));
return testBean;
}
}
查看注释的不同示例here
所以我有我的 spring bott 应用程序:
@Configuration
@PropertySource("${configuration.file}")
public class Application extends SpringBootServletInitializer implements CommandLineRunner {
...
public static void main(String[] args) throws IOException {
SpringApplication app = new SpringApplication(Application.class);
System.setProperty("configuration.file","file:"+"path to my file");
app.run(args);
}
...
当我 运行 我在 windows configuration.file 上的应用程序设置正确但是当我 运行 在 tomcat 服务器上我得到:
Could not resolve placeholder 'configuration.file' in string value "${configuration.file}"
问题的原因可能是什么?
很明显,这是由于定义的@PropertySource 注释存在问题。您需要定义要在该注释中定义的 属性 文件的实际内容,例如 xyz.properties。你也可以在那里给占位符。理想的做法是,
@Configuration
@PropertySource("classpath:/com/${my.placeholder:default/path}/app.properties")
public class AppConfig {
@Autowired
Environment env;
@Bean
public TestBean testBean() {
TestBean testBean = new TestBean();
testBean.setName(env.getProperty("testbean.name"));
return testBean;
}
}
查看注释的不同示例here