我正在构建一个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时如何加载属性?
答案 0 :(得分:0)
为什么你想把它打包成战争,任何具体原因? Spring引导可以部署为jar文件,请参考spring参考指南。
SRC 主要 java --java类。
资源 application.properties