当前位置: 首页 > wzjs >正文

用织梦做网站不备案的网站的稳定吗

用织梦做网站,不备案的网站的稳定吗,短视频seo营销,微信小程序开发教程模板在 Spring Boot 中,分层打包(Layered Packaging) 是一种优化策略,特别针对 容器化部署(如 Docker) 的场景设计。它的核心思想是将应用的不同部分(依赖、资源、代码等)划分为独立的层…

在 Spring Boot 中,分层打包(Layered Packaging) 是一种优化策略,特别针对 容器化部署(如 Docker) 的场景设计。它的核心思想是将应用的不同部分(依赖、资源、代码等)划分为独立的层(Layer),利用容器镜像的分层缓存机制,减少重复构建和传输的开销。


分层打包的作用

  1. 提升 Docker 镜像构建效率

    • 如果应用代码变动但依赖未变,Docker 只需重新构建代码层,而依赖层可以直接复用缓存。
    • 减少镜像体积和构建时间,尤其适用于 CI/CD 流水线。
  2. 优化镜像层结构

    • 将频繁变动的层(如应用代码)放在上层,稳定层(如依赖)放在下层,充分利用 Docker 的层缓存机制。
  3. 减少重复传输

    • 在 Kubernetes 等集群中,节点间拉取镜像时,未变化的层可直接复用本地缓存。

分层结构

Spring Boot 默认将应用分为以下 4 个层:

层名内容变动频率
dependencies第三方依赖(如 spring-core, logback
spring-boot-loaderSpring Boot 的类加载器(JarLauncher 等)
snapshot-dependencies快照版本的依赖(如 1.0.0-SNAPSHOT
application应用代码、配置文件(src/main/**

如何启用分层打包?

1. Maven 配置

pom.xml 中启用分层:

org.springframework.boot spring-boot-maven-plugin true
2. Gradle 配置

build.gradle 中启用分层:

bootJar {
layered {
enabled = true
}
}


分层结果

打包后生成的 JAR 文件中会包含一个 layers.idx 文件,定义各层的内容:

  • “dependencies”:
    • “BOOT-INF/lib/spring-core-6.1.0.jar”
    • “BOOT-INF/lib/logback-classic-1.4.14.jar”
  • “spring-boot-loader”:
    • “org/”
  • “snapshot-dependencies”:
    • “BOOT-INF/lib/my-snapshot-lib-1.0.0-SNAPSHOT.jar”
  • “application”:
    • “BOOT-INF/classes/”
    • “BOOT-INF/config/”

与 Docker 结合使用

通过分层打包,可以编写高效的 Dockerfile

使用分层构建

FROM eclipse-temurin:17-jre as builder
WORKDIR application
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
RUN java -Djarmode=layertools -jar app.jar extract

正式镜像

FROM eclipse-temurin:17-jre
WORKDIR application
COPY --from=builder application/dependencies/ ./
COPY --from=builder application/spring-boot-loader/ ./
COPY --from=builder application/snapshot-dependencies/ ./
COPY --from=builder application/application/ ./
ENTRYPOINT [“java”, “org.springframework.boot.loader.JarLauncher”]


命令 RUN java -Djarmode=layertools -jar app.jar extract 是 Spring Boot 分层打包(Layered Packaging)中与 Docker 镜像构建 结合使用的关键步骤,其核心作用是将 Spring Boot 的可执行 JAR 文件按预定义的分层结构解压到指定目录。以下是详细解释:


命令分解

部分说明
java -jar app.jar运行 Spring Boot 生成的 Fat JAR 文件(包含所有依赖和代码)。
-Djarmode=layertools设置 JVM 参数,启用 Spring Boot 的 layertools 模式。
extractlayertools 模式下执行的命令,表示将 JAR 中的分层内容解压到文件系统。
关键步骤
  1. 使用 layertools 工具解压分层后的内容。
  2. 按层顺序复制到镜像中,依赖层(稳定)先复制,应用层(易变)最后。

自定义分层

如果需要调整默认分层逻辑,可以通过 layers.xml(Maven)或自定义 Layers 接口(Gradle)实现。例如:

<!-- src/main/layers.xml -->
<layers xmlns="http://www.springframework.org/schema/boot/layers"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/boot/layers https://www.springframework.org/schema/boot/layers/layers-3.2.xsd"><application><into layer="application"><include>com/example/**</include></into></application><dependencies><into layer="snapshot-dependencies"><include>*:*:*SNAPSHOT</include></into><into layer="dependencies"/></dependencies>
</layers>

适用场景

  • 高频部署的微服务:代码频繁更新,但依赖稳定。
  • 大型依赖项:如数据库驱动、SDK 等体积大的依赖。
  • 多环境构建:开发、测试、生产环境共用基础依赖层。

分层打包通过解耦应用的不同部分,优化了容器化部署的效率。它解决了传统 Fat JAR 在 Docker 中重复构建的问题,是 Spring Boot 对云原生场景的重要支持。

http://www.dtcms.com/wzjs/825032.html

相关文章:

  • 百度网站降级的原因wordpress换域名代码
  • 兰州城建设计院网站设计网站页面特效怎么做
  • 网站备案怎么这么麻烦丰收路网站建设
  • 网站如何报备国外网络推广
  • 网站只做五周珠海网站外包
  • 深圳网站建设招聘wordpress会员管理插件
  • 广州seo技术优化网站seo网站的优势和劣势
  • 肇庆网站制作策划室内设计找哪个公司好
  • 做微电影模板下载网站惠来网站建设
  • 网站浮漂 代码英文网站怎么做301跳转
  • 明星网站策划书如何进入网站开发后台
  • 如何申请一个免费的网站空间wordpress 作者墙
  • 企业建设网站应如何申请wordpress博客福利网整站源码
  • 官网查询网站苏州网站建设万户
  • 公司网站要怎么做威海外贸网站建设电话
  • 专业的网站建设网络WordPress模板使用方法
  • 成都网站建设单位客源汇软件效果怎么样
  • 中小型企业网站优化价格免费字体下载
  • 卖手机网站开发的必要性山西电商网站开发
  • 程序员自己做网站赚钱有赞微商城官网登录
  • seo网站排名优化案例wordpress取消副标题
  • 网站模板及素材手游网站建设的宗旨
  • 鞍山网站制作creative wordpress
  • 网站开发技术总结电商seo优化是什么
  • 高级建站网站购物网站的建设意义
  • 高端网站开放十六局门户网
  • 建材网站模板市体育局网站 两学一做
  • 南昌新手网站建设费用游戏云电脑
  • 美工做网站尺寸多少钱百度人气榜排名
  • 四川网站建设电话网站建设相关的网站