如何在Spring中禁用使用@Component注释创建bean?

问题描述

我在项目中有一些用于重构逻辑的通用接口。看起来像这样:

public interface RefactorAwareEntryPoint {

    default boolean doRefactor() {
        if (EventLogService.wasEvent(getEventType())) {
            return true;
        }
        boolean result = doRefactorInternal();
        if (result) {
            EventLogService.registerEvent(eventType);
        }
        return result;
    }

    String getEventType();
    
    boolean doRefactorInternal();
}

然后,当我需要编写一些重构时,我用方法实现此接口,将类标记为@Component,然后Spring in loop评估每个接口实现并将其注册到数据库中。 但是我们有很多重构(每年-200-300个新的)。很难手动禁用旧的实现,并且在我们的Spring上下文中有很多bean。 我们可以做一些事情,例如使用一些注释-在某些情况下会禁用组件的创建吗?

例如:

@Component
@Enabled(YEAR.2020)
public class CustomRefactor implements RefactorAwareEntryPoint {
 // Code implementation
}

此注释将像这样(伪代码)工作:

if (YEAR.2020) {
  create bean -> new CustomRefactor()
}

当它是YEAR.2021时-在春季上下文中,我们将没有YEAR.2020中的bean。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)