使用org.springframework.data.jdbc.core.convert.SqlGenerator在我自己的包中抛出组合设计

b91juud3  于 2023-03-07  发布在  Spring
关注(0)|答案(1)|浏览(173)

我目前正在开发一个使用Spring Data JDBC自定义存储库的项目。在我的自定义存储库中,我实现了自己的DataAccessStrategy、AggregateRoot、AggregateExecutorSqlParameterSource来生成SQL脚本。但是,我希望使用SqlGenerator类来生成SQL,该类具有包私有访问修饰符。
为了解决这个问题,我计划使用组合,方法是在org.springframework. data. jdbc.core.convert中创建一个公共类,并使用一个带有SqlGenerator类型的私有final字段。
我的问题是:开放包私有的SqlGenerator类的方法以便在我的库中使用是个好主意吗?
任何意见或建议将不胜感激!

cbeh67ev

cbeh67ev1#

开放包私有SqlGenerator类的方法以在我的库中使用,这是一个好主意吗?
对这个问题有几种不同的解释,但我认为答案总是:没有。

  1. Spring Data 团队应该开放这些方法吗?
    不,它们不应该这样做,使方法可公开访问需要额外的维护和设计工作。SqlGenerator不适合在SpringDataJDBC本身之外重用。
    1.我应该修补我的SpringDataJDBC版本以使这些方法可访问吗?
    不,补丁需要重新应用到每个新版本,这会给您带来大量的维护工作,并可能阻止您或您的团队升级到最新版本的Spring Data JDBC,这可能会影响升级其他Spring版本和库的能力,并最终影响应用升级的能力,而由于安全问题,这些升级非常重要。
    在不受您控制的包中创建类的整个想法是一种欺骗,我建议不要这样做。
    相反,我只是把SqlGenerator复制到你的包中,然后使用副本,这样你就可以控制所有的东西,而且很明显,它是你控制的,因为它在你的源代码路径中。
    另一种方法是使用反射来访问现有类。

相关问题