如何在Spring中声明一个可选的@Bean?

时间:2018-01-11 06:24:02

标签: spring javabeans

我想在@Bean文件中提供可选的@Configuration,例如:

@Bean
public Type method(Type dependency) {
    // TODO
}

当找不到依赖关系时,不应该调用该方法。

怎么做?

2 个答案:

答案 0 :(得分:3)

如果在SpringBoot ConditionalOnClass

中使用since 4.0Conditional,则需要使用See If using Spring

SpringBoot的示例: -

@Bean
@ConditionalOnClass(value=com.mypack.Type.class)
public Type method() {
    ......
    return ...
}

现在method()仅在com.mypack.Type.class位于classpath时才会被调用。

答案 1 :(得分:0)

在调用任何需要依赖项的方法之前,必须先检查依赖项是否已初始化。

@Autowired(required = false) 
Type dependency;

public Type methodWhichRequiresTheBean() {
   ...
}

public Type someOtherMethod() { 
     if(dependency != null) { //Check if dependency initialized
         methodWhichRequiresTheBean();
     }
}