MapStructPlus 1.3.1 版本发布,更好地适配 IDEA 本地开发
今晚上更新了两个版本,1.3.0和1.3.1,主要为了解决 IDEA 部分编译时,出现的各种莫名奇妙的问题。
更新日志
-
新增编译参数的配置方式,解决 IDEA 部分编译导致的一系列问题;
-
更好地适配本地IDEA开发;
-
AutoMapper
增加imports
支持
问题描述
一段时间以来,有好几位朋友反馈过 MapStructPlus 在使用时,修改了类,启动会报错,但重新执行 mvn clean compile
又恢复了正常。
就是这么一个莫名其妙的问题,最近终于想到了原因!
原因
首先,该问题出现的前提是在项目中添加了 MapStructPlus 的配置类,之后在日常的开发中,修改了需要转换的 Bean 对象时,而 IDEA 的编译方式,是只编译修改过的类,所以,刚刚修改过的类,重新编译时,并没有加载到原先的配置类,所以没有按照预期来生成转换类,最终引发了各种各样奇怪的问题出现,而重新执行 mvn clean compile
会把错误编译生成的转换类删掉,重新编译整个项目,故又能恢复。
解决方案
提供了两种解决方案:
-
将所有配置项,都通过编译参数传递给编译器;
-
通过编译参数,指定配置类名。
这样子,无论是部分编译,还是全量编译,都能保证配置相同。
示例
这里拿第二种方式举例,假设在 maven 环境中,原来配置如下:
@MapperConfig(adapterClassName = "DemoConvertMapperAdapter", adapterPackage = "io.github.linpeilie.adapter", mapAdapterClassName = "DemoMapConvertMapperAdapter") public class MapStructPlusConfiguration { }
使用新版本后,可以在编译参数中,指定MapStructPlus的配置类名称,如下:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${maven.compiler.source}</source> <target>${maven.compiler.target}</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${lombok.version}</version> </path> <path> <groupId>io.github.linpeilie</groupId> <artifactId>mapstruct-plus-processor</artifactId> <version>${mapstruct-plus.version}</version> </path> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path> </annotationProcessorPaths> <compilerArgs> <arg>-Amapstruct.plus.mapperConfigClass=com.tutelary.MapStructPlusConfiguration</arg> </compilerArgs> </configuration> </plugin>
其他具体的配置项,可以参考 MapStructPlus - 指南
与 IDEA 适配仍存在的问题
在以下场景,需要重新执行 mvn clean compile
:
-
当添加新的需要转换的类,并且该类与其他类有嵌套关系时,部分编译不能生成两者的自动转换;
-
当删除已经转换的类时;
-
修改配置时。
结语
官网打不开,是因为域名在备案,不是跑路了,可以访问国内站点镜像

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
谷歌建议员工不要将内部信息输入 AI 聊天机器人
路透社援引消息人士报道称,谷歌母公司 Alphabet 正在建议其员工不要将内部机密信息输入人工智能(AI)聊天机器人,包括 ChatGPT 和他们自己的 Bard。同时还提醒其工程师,避免直接使用聊天机器人可以生成的计算机代码。 谷歌方面后续证实了这一报道。但该公司表示,虽然 Bard 可能会提出不受欢迎的代码建议,但它还是有助于程序员;并且旨在对技术的局限性保持透明。目前谷歌正面向 180 多个国家和 40 种语言推广 Bard。 路透社认为,谷歌的这些担忧表明,该公司希望在与 ChatGPT 竞争时,避免所推出的软件对公司业务可能造成的损害。他们的谨慎态度也反映了企业安全标准制定中,有关不允许使用公开可用聊天程序的警告。 事实上谷歌并不是唯一一家对内部聊天机器人的使用采取谨慎态度的公司。三星、Amazon 和德意志银行均表示,同样“对 AI 聊天机器人设置了护栏”。据称苹果也有限制员工使用外部聊天机器人,但该公司没有回应置评请求。 微软消费者首席营销官 Yusuf Mehdi 称,公司不希望员工使用公共聊天机器人进行工作是有道理的,“公司正在采取适当保守的立场”。但微软拒绝就其是...
- 下一篇
Spring Tools 4.19.0 发布,Spring 开发工具
Spring Tools 4 是由 Spring 团队打造的 Spring 开发工具,从零开始构建,融合了现代技术和开发者工具架构。它在单独的进程中运行,从构建之初就考虑到了性能问题,并且支持最新的 Spring 技术,为开发基于 Spring 的企业应用提供世界级支持。同时,全新版本的 Spring Tools 与 IDE 无关,可在各种编码环境中使用,支持 Eclipse、Visual Studio Code 与 Theia。 最新发布的版本是 Spring Tools 4.19.0,主要变化: 更新 Spring Tools 4 for Eclipse 发行版 升级到 Eclipse 2023-06 版本 (new and noteworthy) 错误修复和改进 (Spring Boot) 新变化:Spring Data Repositories: Validate ID 类型 (#457) (Spring Boot) 修复:从 Spring Boot 3.0.x 升级到 3.1.0 导致无法运行 (#1051) (Spring Boot) 修复:用更全面的 Spring 组件模...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音