Spring Boot的application.properties自动装配在Tomcat中部署时会抛出一个NPE

时间:2017-11-05 23:17:21

标签: java maven tomcat spring-boot

我正在构建一个spring boot应用程序,这是我的目录结构:

src
 main
  java
    com.company.appp
 resources
  application.properties
  log4j2.xml

使用以下autowire代码可以正确读取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后,我在NullPointerException获得了env.getProperty

为什么在tomcat中部署时会发生这种情况?在tomcat中部署spring boot war时如何加载属性?

1 个答案:

答案 0 :(得分:0)

为什么你想把它打包成战争,任何具体原因? Spring引导可以部署为jar文件,请参考spring参考指南。

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-packaging-for-production

SRC    主要    java --java类。

资源       application.properties