唐山做网站哪家公司好wordpress的中文插件安装教程视频
唐山做网站哪家公司好,wordpress的中文插件安装教程视频,企业的vi设计系统,做网站前台开发学习一句话总结本章的内容#xff1a;本文介绍了Maven配置文件加载属性的起源#xff08;为解决手动管理多环境配置的痛点#xff09;、本质#xff08;将不变模板与可变环境信息分离的动态替换机制#xff09;、实现步骤#xff08;定义属性、开启资源过滤#xff09;和核心…一句话总结本章的内容本文介绍了Maven配置文件加载属性的起源为解决手动管理多环境配置的痛点、本质将不变模板与可变环境信息分离的动态替换机制、实现步骤定义属性、开启资源过滤和核心原理process-resources阶段通过属性内存空间替换占位符并用印章和明信片的比喻形象解释了这一过程最后补充了版本管理中SNAPSHOT与RELEASE的区别。前言问题的出现或者说是配置文件加载属性的萌芽。原始的项目当代码需要提交到Git仓库或者交给测试、部署到生产环境时会发生什么测试和生产环境的数据库地址、账号密码完全不一样。这段代码在其他环境根本跑不起来。解决办法每次部署前都需要手动修改这个Java文件改成对应环境的配置。然后重新编译、打包。后果这是一个极易出错且耗时费力的过程而且存在把测试环境的配置错误地带到生产环境的巨大风险。伴随着Maven的出现Maven作为一款优秀的项目构建工具看到了这个普遍存在的痛点。它想解决的问题是如何让构建过程自动化并且能智能地适应不同环境。它的核心思路就是将“不变的模板”和“可变的环境信息”彻底分离。因此为了解决软件开发中日益严重的环境割裂和手动管理混乱的问题配置文件加载属性应运而生。配置文件加载属性是什么在Maven中配置文件加载属性本质上是一种将构建过程中的配置信息集中管理和动态替换的机制。它的核心目的是将那些因环境开发、测试、生产不同或频繁变动的值如数据库连接、依赖版本抽离出来用一个可变的占位符${property.name}代替从而实现配置与代码的解耦。简单的说它就像设计一张填空题试卷而试卷本身代码是固定的具体的答案配置值则可以在不同场景下灵活填入。配置文件加载属性的步骤第一步在pom文件中统一管理配置文件中的属性project !-- 第一步在properties中定义属性 -- properties spring.version5.2.10.RELEASE/spring.version junit.version4.12/junit.version /properties dependencies !-- 第二步在需要使用的地方引用属性 -- dependency groupIdorg.springframework/groupId artifactIdspring-context/artifactId !-- 使用 ${属性名} 引用 -- version${spring.version}/version /dependency dependency groupIdjunit/groupId artifactIdjunit/artifactId version${junit.version}/version /dependency /dependencies /project第二步将属性值动态注入外部配置文件这是配置文件加载属性的精髓。它能让我们的jdbc.properties、log4j.properties等配置文件也使用Maven中定义的属性。假设你有一个src/main/resources/jdbc.properties文件内容如下propertiesjdbc.drivercom.mysql.jdbc.Driver jdbc.url${jdbc.url} -- 这是一个占位符等待Maven填充 jdbc.usernameroot jdbc.password123456步骤一在pom文件中定义属性xmlproperties !-- 定义一个名为 jdbc.url 的属性值可以根据环境灵活改变 -- jdbc.urljdbc:mysql://localhost:3306/mydb_dev/jdbc.url /properties步骤二开启资源过滤需要在pom.xml的build标签中配置资源插件告诉Maven在打包时对指定目录如src/main/resources下的文件进行过滤。过滤的过程就是解析文件中的${...}占位符并用定义好的属性值进行替换build resources resource !-- 指定要处理的资源目录 -- directorysrc/main/resources/directory !-- 开启过滤这是实现属性替换的关键 -- filteringtrue/filtering /resource /resources /build最后一步完成以上配置后执行mvn process-resources或打包命令最终生成的jdbc.properties文件中的jdbc.url就会被自动替换为jdbc:mysql://localhost:3306/mydb_dev形象的说我们在这里做一个比喻把配置文件比做成明信片模板上面有一些固定格式也就是占位符根据不同的人具体的在里面填写对应的数据。而这些数据是在pom.xml文件中注册的不同的用户有不同的数据相当于身份证同时还在pom.xml文件中写到要把对应的数据填写到配置文件properties中也就是资源过滤器。执行 mvn package 等命令并触发资源过滤功能将数据填充到占位符中。资源过滤器详解我们可以把资源过滤器比做成印章而properties文件中的占位符就是等待被填充的印子而后执行打包命令时compile → process-resources → compile → test → package↑就在这个阶段process-resources阶段的具体操作当Maven执行到process-resources阶段时// 伪代码Maven内部是这样工作的 public void processResources() { // 1. 读取所有配置的属性 Properties mavenProperties new Properties(); mavenProperties.put(db.url, jdbc:mysql://localhost:3306/mydb); mavenProperties.put(db.username, root); mavenProperties.put(db.password, 123456); // 2. 找到所有需要过滤的资源文件 File resourceFile new File(src/main/resources/application.properties); // 3. 读取文件内容 String content readFile(resourceFile); // content 数据库地址${db.url}\n用户名${db.username}\n密码${db.password} // 4. 替换所有占位符 for (String key : mavenProperties.keySet()) { String placeholder ${ key }; String value mavenProperties.get(key); content content.replace(placeholder, value); } // 5. 写入到target目录 writeFile(target/classes/application.properties, content); }关键为什么能访问到pom.xml里的值Maven在运行时会维护一个属性内存空间包含// Maven的内存模型 MapString, String mavenProjectProperties new HashMap(); // 从pom.xml加载的properties mavenProjectProperties.put(db.url, jdbc:mysql://localhost:3306/mydb); mavenProjectProperties.put(project.version, 1.0.0); mavenProjectProperties.put(project.build.sourceEncoding, UTF-8); // 系统属性 mavenProjectProperties.put(basedir, /Users/xxx/my-project); mavenProjectProperties.put(java.version, 1.8); // 环境变量 mavenProjectProperties.put(env.JAVA_HOME, /usr/lib/jvm/java-8);版本管理工程版本:SNAPSHOT(快照版本)项目开发过程中临时输出的版本称为快照版本快照版本会随着开发的进展不断更新RELEASE(发布版本)项目开发到进入阶段里程碑后向团队外部发布较为稳定的版本这种版本所对应的构件文件是稳定的即便进行功能的后续开发也不会改变当前发布版本内容这种版本称为发布版本发布版本alpha版beta版纯数字版最后给大推荐如果您是计算机领域AI / 大数据 / 网络 / 软件工程等的研究者近期有成果想投稿发表这几个高认可度的国际会议可以参考均支持 EI/SCOPUS 检索第七届计算机信息与大数据应用会议https://ais.cn/u/QnaAJz第九届先进算法与控制工程会议https://ais.cn/u/BFfyuq结语最后的最后感谢大家观看到最后如果对你有帮助请一键三连点赞关注拜托了收藏你的支持就是我最大的鼓励除夕夜小北在这里祝大家新年快乐平安顺遂