是否可以使用反射来实现/覆盖抽象方法?

我有一个关于反射的问题,但是动机来自使用Spring Framework。

考虑this项目,这是已部署项目的最低工作示例版本。

ProjectionResourceProcessorConfig类中,每个投影都有一个entityProjectionResourceProcessor方法,数据库中的每个实体都有几个投影。大约有60种方法。

由于明显的维护缺点,我不想继续这样做。我想使用反射来为每个投影类自动注册一个bean。

postProcessBeanDefinitionRegistry类中的ProjectionResourceProcessorConfig方法表明,我可以获得要用来为每个bean注册一个bean的类的列表,并说明了如何以编程方式注册bean。

但是,因为我需要使用ProjectionResourceProcessor类,所以我需要重写getEntityClass方法。我还无法找到以编程方式执行此操作的方法。这就是为什么我声明了内部类。它显示了程序化bean注册的工作原理,但与每个bean都需要一段代码的问题相同。

除了反思之外,我尝试使用setMethodOverrides类的RootBeanDefinition方法来覆盖该方法,但是我无法理解如何使用该方法。 Google找不到任何文档或用法示例(带有模糊关联的中文帖子,其副本在多个不同的网站上除外)。

我也尝试使用MethodReplacer类,但是还没有找到如何在注释驱动的配置中使用它。

我还尝试用一个变量替换getEntityClass方法,并通过反射替换该变量的值,但是很显然,当读取该变量时,在超类中设置的值就是被检索到的值。 / p>

要测试项目,请在DemoApplicationTests上运行测试。它将打印某些实体的投影。如果他们有链接,那就可以了。

可以做我想做的事吗?如果是,怎么办?

谢谢。

yutao747409365 回答:是否可以使用反射来实现/覆盖抽象方法?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3166814.html

大家都在问