当前位置: 代码迷 >> java >> 如何默默取消bean创建?
  详细解决方案

如何默默取消bean创建?

热度:62   发布时间:2023-07-26 14:29:45.0
@Component
public class MyBean {

  @Autowired
  public MyBean(@Value("${optional:#{null}}") String optional) {
    if (optional == null) {
      // cancel bean creation?
    }
  }

}

如何默默取消bean创建? 我可以抛出RuntimeException ,但我不希望将此取消视为错误:必须不创建bean,应用程序初始化必须继续。

在这里你可以使用

步骤1 - 实现以指定何时应该创建bean。

public class SomeCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return System.getProperty("optional") != null;
    }
}

条件类称为直接类(而不是spring bean),因此它不能使用@Value属性注入。 请看替代

步骤2 -在配置类指定上述类作为条件来决定bean创建

@Configuration
public class SomeAppConfig {

    @Bean
    @Condition(SomeCondition.class)
    public MyBean myBean() {
      return new MyBean();
    }
}

PS :我假设您使用Java配置。

这是不可能的。

如果您不创建bean,则无法使用它。 它只是一个简单的Java类,在bean中使用/自动装配的属性是无用的。

但是,您可以为不同类型的环境配置配置文件基本配置Bean,例如“Dev”,“Test”或“Production”。

  相关解决方案