我有一个spring boot应用程序到tomcat 8的传统war部署。即使我定义了@PropertySources注释,在@PropertySources中指定的目录中给出的属性文件中定义的属性似乎没有找到。我修改了一个 spring boot web 示例项目,可以复制这个问题。在下面的示例中,调用 Web 控制器的结果始终是“Hello Default,来自 Spring Boot 的问候!”。它永远不会从外部 application.properties 中获取“名称”.property(如果我从类属性文件中完全删除该属性,则部署将失败,因为该属性从未解析)。我错过了什么以至于外部属性似乎没有被拾取?
我的应用程序类:
@SpringBootApplication
@Profile("dev")
@PropertySource(value = "file:/usr/local/tomcat/config/")
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder builder) {
return builder.profiles("dev").sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
网页控制器:
@RestController
public class HelloController {
@Value("${name}")
private String name;
@RequestMapping("/")
public String index() {
return "Hello " +name+ ", Greetings from Spring Boot!";
}
}
Run Code Online (Sandbox Code Playgroud)
src/main/resources/application.properties:
debug=true
logging.level.org.springframework.boot.context=DEBUG
logging.level.org.springframework.boot.env=DEBUG
logging.level.org.springframework.web=DEBUG
name=Default
Run Code Online (Sandbox Code Playgroud)
/usr/local/tomcat/config …