Skip to content

Conversation

@ruansheng8
Copy link
Contributor

@ruansheng8 ruansheng8 commented Jun 3, 2024

说明

该PR增强了 mybatis-flex.config 的配置方式,目前官方文档支持的配置方式:

在项目的根目录 ( pom.xml 所在的目录)下创建 `mybatis-flex.config` 配置文件。

在企业项目开发中,通常会封装一个统一的 ORM 包,希望可以通过统一的框架包来管理默认的配置,而无需在各个项目中都配置一遍(几十个项目全部配置一遍,后续调整非常麻烦)

该 PR 支持在框架层面的 JAR 包 resources 目录下添加 mybatis-flex.config (/src/main/resources/mybatis-flex.config)配置文件,所有依赖的子项目会自动读取到该配置。

@yangfuhai yangfuhai merged commit dfa3d70 into mybatis-flex:main Jun 12, 2024
@fangzhengjin
Copy link
Contributor

这个功能很容易让人误解,因为在 https://github.com/mybatis-flex/mybatis-flex/pull/351/files#diff-4f4a75cf77c8b1d4a8db0151b2df950416c50bcdc2f102242c5bfb4836e7067bR104 取得的ClassLoader只加载了同为APT的相关依赖,拿不到项目中的依赖,也就没有主题中所述“框架层”依赖的信息,除非题主所提到的“框架层”依赖也有APT相关处理,所以才可以在APT过程中加载到,这个更新是否应该撤回?

image

@fangzhengjin
Copy link
Contributor

@yangfuhai 维护者怎么看?

@yangfuhai
Copy link
Contributor

@yangfuhai 维护者怎么看?

@fangzhengjin 我理解题主提到的

在企业项目开发中,通常会封装一个统一的 ORM 包,希望可以通过统一的框架包来管理默认的配置,而无需在各个项目中都配置一遍(几十个项目全部配置一遍,后续调整非常麻烦)

应该是在 题主 自己的 ORM 中,包含了 mybatis-flex.config 文件,以及 APT 处理内容。 也就是题主的这个 ORM JAR 中,既是一个 APT 程序,也是一个运行时的 ORM?

@ruansheng8 也可以讨论一下。

@ruansheng8
Copy link
Contributor Author

ruansheng8 commented Jul 29, 2024

@yangfuhai 维护者怎么看?

@fangzhengjin 我理解题主提到的

在企业项目开发中,通常会封装一个统一的 ORM 包,希望可以通过统一的框架包来管理默认的配置,而无需在各个项目中都配置一遍(几十个项目全部配置一遍,后续调整非常麻烦)

应该是在 题主 自己的 ORM 中,包含了 mybatis-flex.config 文件,以及 APT 处理内容。 也就是题主的这个 ORM JAR 中,既是一个 APT 程序,也是一个运行时的 ORM?

@ruansheng8 也可以讨论一下。

@yangfuhai 我看了下上面的讨论,我们框架层有再单独做了一层额外的特殊处理,如果在理解上存在歧义的话,这个提交可以回退,我这边框架层目前可以通过其他方式实现类似的功能

@fangzhengjin
Copy link
Contributor

@yangfuhai 维护者怎么看?

@fangzhengjin 我理解题主提到的

在企业项目开发中,通常会封装一个统一的 ORM 包,希望可以通过统一的框架包来管理默认的配置,而无需在各个项目中都配置一遍(几十个项目全部配置一遍,后续调整非常麻烦)

应该是在 题主 自己的 ORM 中,包含了 mybatis-flex.config 文件,以及 APT 处理内容。 也就是题主的这个 ORM JAR 中,既是一个 APT 程序,也是一个运行时的 ORM?
@ruansheng8 也可以讨论一下。

@yangfuhai 我看了下上面的讨论,我们框架层有再单独做了一层额外的特殊处理,如果在理解上存在歧义的话,这个提交可以回退,我这边框架层目前可以通过其他方式实现类似的功能

这个额外的处理是指既是APT处理程序,又是功能模块吗?主要是按上面的说明确实无法复现该功能,所以很是疑惑

yangfuhai added a commit that referenced this pull request Jul 29, 2024
@ruansheng8
Copy link
Contributor Author

image

@fangzhengjin 如果按照PR上面的处理方式,当前项目通过依赖其他 Maven 的 Jar 包,是可以正常通过 ClassLoader 读取到对应 Jar 里面的 Resource 文件的,不太确定你那边测试的 Demo 是以什么样的方式。

当 PR 回退后,我这边会采用直接在框架层重写 mybatis-flex 的 APT 处理机制,做个性化处理即可。

@fangzhengjin
Copy link
Contributor

fangzhengjin commented Jul 29, 2024

image

@fangzhengjin 如果按照PR上面的处理方式,当前项目通过依赖其他 Maven 的 Jar 包,是可以正常通过 ClassLoader 读取到对应 Jar 里面的 Resource 文件的,不太确定你那边测试的 Demo 是以什么样的方式。

当 PR 回退后,我这边会采用直接在框架层重写 mybatis-flex 的 APT 处理机制,做个性化处理即可。

你的这个META-INF里是不是有services/javax.annotation.processing.Processor?我试了很多次也Google了,如果这个starters不包含是APT处理程序的话,确实是获取不到他的资源
image

我在测试过程中看到这个classloader只能加载到APT相关的包
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants