首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在非bean类中使用

在非bean类中使用
EN

Stack Overflow用户
提问于 2021-08-05 13:37:04
回答 1查看 177关注 0票数 0

我在遗留项目中使用了Spring,并且希望在一个类中使用“调度”运行,这个类不是作为bean创建的,而是作为一个通常的“新”类创建的。因此,诸如@Scheduled这样的注解是不活动的。

然后如何通过显式调用所有相关的Spring方法来启用调度?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-05 15:14:39

基本上您不能这样做,因为spring只能在由Spring管理的类上使用它的“魔力”(在本例中是确定调度规则并定期调用该方法)。

如果必须手动创建类,则不能在其上放置@Scheduled注释。

所以你的选择是:

  1. 创建了一个spring (据我理解,您已经有了spring,这就是问题所在),它将创建您的遗留类,或者可能通过一些遗留的全局注册表访问它--它实际上取决于您的项目:

代码语言:javascript
复制
@Component
public class MySpringBean {

   @Scheduled (...)
  public void scheduledStuff()  {

      MyLegacyClass c = MyLegacyGlobalContext.getMyLegacyClass();
      c.callMyLegacyMethod();
   }
}

  1. 完全在spring之外实现调度:

代码语言:javascript
复制
ScheduledExecutorService scheduledExecutorService =
        Executors.newScheduledThreadPool(5);

ScheduledFuture scheduledFuture =
    scheduledExecutorService.schedule(new Callable() {
        public Object call() throws Exception {
            MyLegacyClass c = MyLegacyGlobalContext.getMyLegacyClass();
            c.callMyLegacyMethod();
        }
    },
    30,
    TimeUnit.MINUTES);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68667641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档