gpt4 book ai didi

java - 如何扩展方法 afterPropertiesSet()

转载 作者:行者123 更新时间:2023-11-30 07:29:31 27 4
gpt4 key购买 nike

在我的 spring 配置中我定义了 bean

bean id="com.companyName.schedulerBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean"

我想扩展方法 SchedulerFactoryBean.afterPropertiesSet() 的逻辑。有什么办法吗?

例如现在 SchedulerFactoryBean.afterPropertiesSet() 执行逻辑:

  1. 初始化schedulerFactory和Scheduler
  2. 注册工作详情

我想要这样的方法逻辑:

  1. 初始化schedulerFactory和Scheduler
  2. 删除现有工作
  3. 注册工作详情

提前致谢。

附注对不起我的英语。

最佳答案

不幸的是,您不能以您想要的方式扩展方法。如果方法不是私有(private)的或最终的,您可以在子类中覆盖它们并使用 super 调用父类(super class)方法:

 public void someMethod() {
//you can add code here
super.someMethod();
//or here
}

在这种情况下,您可以在调用 super.someMethod()之前之后添加代码。但是,您不能在两者之间添加代码。

因此,通过这种方法,您可以实现以下目标:

remove existing jibs //jobs instead of jibs? In that case this position might not make much sense
initialize schedulerFactory and Scheduler
registerJobDetails

或者这个

initialize schedulerFactory and Scheduler    
registerJobDetails
remove existing jibs

如果您想要在内部调用其他一些方法之间添加代码的方法,您可以尝试覆盖其中一个方法(它们甚至可能为此而设计)。或者,您可以使用 AOP 并为内部调用的方法创建切点。

如果没有内部调用的方法来覆盖,唯一的其他解决方案是复制 SchedulerFactoryBean.afterPropertiesSet() 的内容并在两者之间添加您的代码。

但是,这是不可取的,所以我更愿意在调用 super 之前或之后添加代码(如果可能的话),或者覆盖内部调用的方法。

关于java - 如何扩展方法 afterPropertiesSet(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com