在Spring中是否可以取消声明或定义一个空bean?

时间:2018-11-09 00:00:48

标签: java spring

在使用Spring时,我遇到了一个场景,如果特定的bean不为null,则会调用某些逻辑。我不希望这种逻辑被调用。因此,我需要将此对象为null。有问题的Bean具有通过自动配置创建的默认非空值。

我的问题是这样:有没有办法“取消声明” bean,使其为空?

这行不通:

@Bean
public UserDetailsService userDetailsService() {
    return null;
}

它产生:

org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'userDetailsService' is expected to be of type 'org.springframework.security.core.userdetails.UserDetailsService' but was actually of type 'org.springframework.beans.factory.support.NullBean'

是否有Spring配置方法可以做到这一点?还是我必须深入研究并调用构造函数和设置方法才能将此对象设置为null?

1 个答案:

答案 0 :(得分:1)

听起来您不希望将UserDetailsS​​ervice视为Bean,因此不应将其创建为一个。删除将其设置为Bean的注释(例如@ Service,@ Bean)