【发布时间】:2017-11-05 23:17:20
【问题描述】:
我正在构建一个 Spring Boot 应用程序,这是我的目录结构:
src
main
java
com.company.appp
resources
application.properties
log4j2.xml
使用以下自动装配代码可以很好地读取 application.properties 中的属性:
@ServletComponentScan
@SpringBootApplication
public class MyApplication {
@Autowired
private Environment env;
this.env.getProperty("test");
}
它在其他类中也以相同的方式加载。当我像这样运行应用程序时,这很好用:
mvn spring:boot run 或直接来自 IntelliJ,没有问题。但是我尝试使用mvn clean install 打包WAR,结果如下:
war
WEB-INF
lib
classses
com
log4j2.xml
application.properties
org
META-INF
并将其部署在 Tomcat 中。访问应用程序 URL 后,我在 env.getProperty 收到了一个 NullPointerException。
为什么我在 tomcat 中部署它时会发生这种情况?在tomcat中部署spring boot war时如何加载属性?
【问题讨论】:
-
你的pom文件中是否排除了内嵌web容器的依赖?
-
你说的是哪一个?
-
@NEO 请发布至少可以编译的代码!您的
MyApplication类甚至无法编译。您需要向我们展示 pom 依赖项。 2.尝试使用@Value("${propertyname}")绑定属性
标签: java maven tomcat spring-boot