Spring-Boot静态文件处理

前言

        Spring-Boot不同于传统的项目,它去掉了所谓的webapp,这让很多人摸不着头脑,因为静态文件又该放在哪里呢?下面,我们就来看看该怎么做吧?

Spring-Boot的静态文件配置

        实际上,Spring-Boot之所以十分好用,是因为它为我们做了非常多的自动配置。当然,其中包括我们需要的静态文件。实际上,大家只要在自己的代码中搜索CLASSPATH_RESOURCE_LOCATIONS这个关键词就可以了。可以看到如下的代码。

    private static final String[] SERVLET_RESOURCE_LOCATIONS = { "/" };

    private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
            "classpath:/META-INF/resources/", "classpath:/resources/",
            "classpath:/static/", "classpath:/public/" };

    private static final String[] RESOURCE_LOCATIONS;

        好吧,原来是放在这些相关的路径下,其会按照这个顺序去加载静态文件,如果都找不到,那就只能报404了。阿偶。

进一步探究

        事情到这里还远远没有结束,为什么这样说呢?我们看到下面的图就明白了。


1


        通过上面的图我们可以发现有关自动配置的类几乎都在这里了,那么我们想看啥默认配置就可以去代码里面直接看了对吧!

总结

        好了,今天的总结就到此结束了,不过进一步的去看看Spring-Boot的自动配置是非常不错的一件事情唉!一起加油!

hyjy ├─ hyjy-dependencies ├─ hyjy-framework │ ├─ hyjy-common │ ├─ hyjy-spring-boot-starter-env │ ├─ hyjy-spring-boot-starter-mybatis │ ├─ hyjy-spring-boot-starter-redis │ ├─ hyjy-spring-boot-starter-web │ ├─ hyjy-spring-boot-starter-security │ ├─ hyjy-spring-boot-starter-websocket → hyjy-spring-boot-starter-security, hyjy-spring-boot-starter-mq │ ├─ hyjy-spring-boot-starter-monitor │ ├─ hyjy-spring-boot-starter-protection → hyjy-spring-boot-starter-web, hyjy-spring-boot-starter-redis │ ├─ hyjy-spring-boot-starter-job │ ├─ hyjy-spring-boot-starter-mq │ ├─ hyjy-spring-boot-starter-rpc │ ├─ hyjy-spring-boot-starter-excel │ ├─ hyjy-spring-boot-starter-test │ ├─ hyjy-spring-boot-starter-biz-tenant → hyjy-spring-boot-starter-mybatis, hyjy-spring-boot-starter-security │ ├─ hyjy-spring-boot-starter-biz-data-permission → hyjy-spring-boot-starter-mybatis, hyjy-spring-boot-starter-security, hyjy-spring-boot-starter-rpc │ └─ hyjy-spring-boot-starter-biz-ip ├─ hyjy-module-system │ ├─ hyjy-module-system-api → hyjy-common │ └─ hyjy-module-system-server │ ├─ hyjy-module-system-api │ ├─ hyjy-module-infra-api │ ├─ hyjy-spring-boot-starter-env │ ├─ hyjy-spring-boot-starter-biz-data-permission │ ├─ hyjy-spring-boot-starter-biz-tenant │ ├─ hyjy-spring-boot-starter-biz-ip │ ├─ hyjy-spring-boot-starter-security │ ├─ hyjy-spring-boot-starter-mybatis │ ├─ hyjy-spring-boot-starter-redis │ ├─ hyjy-spring-boot-starter-rpc │ ├─ hyjy-spring-boot-starter-job │ └─ hyjy-spring-boot-starter-mq ├─ hyjy-module-infra │ ├─ hyjy-module-infra-api → hyjy-common │ └─ hyjy-module-infra-server │ ├─ hyjy-module-infra-api │ ├─ hyjy-spring-boot-starter-env │ ├─ hyjy-spring-boot-starter-biz-tenant │ ├─ hyjy-spring-boot-starter-security │ ├─ hyjy-spring-boot-starter-websocket │ ├─ hyjy-spring-boot-starter-mybatis │ ├─ hyjy-spring-boot-starter-redis │ └─ hyjy-spring-boot-starter-rpc ├─ hyjy-module-member │ ├─ hyjy-module-member-api → hyjy-common │ └─ hyjy-module-member-server │ ├─ hyjy-module-member-api │ ├─ hyjy-module-system-api │ ├─ hyjy-module-infra-api │ ├─ hyjy-spring-boot-starter-env │ ├─ hyjy-spring-boot-starter-biz-tenant │ └─ hyjy-spring-boot-starter-security ├─ hyjy-module-pay │ ├─ hyjy-module-pay-api → hyjy-common │ └─ hyjy-module-pay-server │ ├─ hyjy-module-pay-api │ ├─ hyjy-module-system-api │ ├─ hyjy-spring-boot-starter-env │ ├─ hyjy-spring-boot-starter-biz-tenant │ ├─ hyjy-spring-boot-starter-security │ └─ hyjy-spring-boot-starter-mybatis ├─ hyjy-server │ ├─ hyjy-module-system-server │ ├─ hyjy-module-infra-server │ ├─ hyjy-module-member-server(可选) │ └─ hyjy-module-pay-server(可选) └─ hyjy-gateway └─ hyjy-module-system-api 根据这个生成一张依赖图
最新发布
07-18
### 生成依赖图的通用方案 在构建模块化项目时,依赖图(Dependency Graph)是一种有效的可视化工具,能够清晰地展示各个模块之间的依赖关系。通过依赖图,开发者可以快速识别循环依赖、冗余依赖以及潜在的架构优化点。对于 Maven 筜等构建工具而言,`mvn dependency:tree` 是获取依赖结构的标准方式,但为了将其转换为图形化的 DOT 格式文件,需要结合脚本进行后处理。 #### 使用 Shell 脚本生成 DOT 文件 以下是一个基于 `awk` 的 Shell 脚本示例,它将 `mvn dependency:tree` 的输出解析并转换为 DOT 格式的文本内容,并将其写入 `dependencies.dot` 文件中: ```bash mvn dependency:tree | awk ' BEGIN { print "digraph G {" } /^\\+-/ || /^|\\+-/ || /^|____/ || /^ \\+-/ || /^____/ { gsub(/[+\\-| ]+/, " ", $0) split($0, a, " ") parent = last if (length(a) > 2) { for (i=2; i < length(a); i++) { if (a[i] != "") { parent = a[i] } } } current = a[length(a)] if (parent != "" && current != "") { print " \"" parent "\" -> \"" current "\"" } last = current } END { print "}" }' > dependencies.dot ``` 该脚本通过正则匹配 Maven 输出中的依赖层级结构,提取父子关系,并构造出有向图的边信息。最终输出的 `dependencies.dot` 可以使用 Graphviz 工具进一步渲染为 PNG、SVG 等图像格式。 #### 使用 Graphviz 渲染图像 一旦获得 DOT 文件,可以通过以下命令将其转换为 PNG 图像: ```bash dot -Tpng dependencies.dot -o dependencies.png ``` 也可以生成 SVG 格式以便嵌入网页或文档: ```bash dot -Tsvg dependencies.dot -o dependencies.svg ``` 这种方式适用于大多数 Java 项目,尤其是多模块 Maven 项目。对于更复杂的场景,如自动检测循环依赖、分析依赖层级深度或集成到 CI/CD 流程中,可考虑使用专门的插件或工具链扩展此流程。 #### 应用场景与优势 通过将模块依赖结构可视化为依赖图,开发团队可以获得如下优势: - **快速定位依赖冲突**:通过图形化展示,可以直观识别多个路径引入相同依赖的情况。 - **优化模块划分**:识别高耦合模块,辅助重构和模块解耦。 - **增强架构透明度**:帮助新成员快速理解项目结构,降低学习成本。 - **支持自动化分析**:DOT 文件可用于静态分析工具链,作为持续集成的一部分进行依赖健康检查[^1]。 此外,该方法不仅适用于 Maven 项目,也可以通过适配器模式扩展至其他构建系统,如 Gradle 或 Bazel,从而实现跨项目的统一依赖管理机制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值