用好springboot系列--web目录外部化

     基于springboot的web工程在打包时,一般情况下分为两种方式。一种为jar方式,这种方式包含一个嵌入式的web容器,例如tomcat或jetty。另一种方式则为war包方式。在工程实践中,我常常使用第一种jar方式,这种方式优点为部署简单。在toB业务中,实施人员不需要掌握tomcat等web容器的安装方式,减少了出错的可能性。但使用此种方式,也同时带来一个问题,springboot工程打包部署时,将web静态页及相关文件,也打入jar中,不利于现场的js页的调试和编码。

      是否有办法可以将web静态资源外部化?答案是存在的。通过阅读springboot的源码,我发现在嵌入式tomcat的启动中,会经历以下步骤。      

EmbeddedWebApplicationContext.createEmbeddedServletContainer()

TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer()

TomcatEmbeddedServletContainerFactory.prepareContext()

AbstractEmbeddedServletContainerFactory.getValidDocumentRoot()

AbstractEmbeddedServletContainerFactory.getCommonDocumentRoot()

最终在获取documentRoot的过程中,我们可以看到类成员,有如下定义。

private static final String[] COMMON_DOC_ROOTS = { "src/main/webapp", "public",  "static" };

所以只要在${user.dir}目录下建立public或static目录,springboot的jar运行时可以加载这些目录下的web静态资源。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值