我目前正在开发一个使用Spring Data JDBC自定义存储库的项目。在我的自定义存储库中,我实现了自己的DataAccessStrategy、AggregateRoot、AggregateExecutor和SqlParameterSource来生成SQL脚本。但是,我希望使用SqlGenerator类来生成SQL,该类具有包私有访问修饰符。
为了解决这个问题,我计划使用组合,方法是在org.springframework. data. jdbc.core.convert中创建一个公共类,并使用一个带有SqlGenerator类型的私有final字段。
我的问题是:开放包私有的SqlGenerator类的方法以便在我的库中使用是个好主意吗?
任何意见或建议将不胜感激!
1条答案
按热度按时间cbeh67ev1#
开放包私有
SqlGenerator
类的方法以在我的库中使用,这是一个好主意吗?对这个问题有几种不同的解释,但我认为答案总是:没有。
不,它们不应该这样做,使方法可公开访问需要额外的维护和设计工作。
SqlGenerator
不适合在SpringDataJDBC本身之外重用。1.我应该修补我的SpringDataJDBC版本以使这些方法可访问吗?
不,补丁需要重新应用到每个新版本,这会给您带来大量的维护工作,并可能阻止您或您的团队升级到最新版本的Spring Data JDBC,这可能会影响升级其他Spring版本和库的能力,并最终影响应用升级的能力,而由于安全问题,这些升级非常重要。
在不受您控制的包中创建类的整个想法是一种欺骗,我建议不要这样做。
相反,我只是把
SqlGenerator
复制到你的包中,然后使用副本,这样你就可以控制所有的东西,而且很明显,它是你控制的,因为它在你的源代码路径中。另一种方法是使用反射来访问现有类。