覆盖Spring bean

时间:2018-10-02 22:34:14

标签: java spring spring-bean

在使用Im的库中,定义了以下bean。

package co.random.core;

@Service
public class ApiEndpoints {

    @Value("${testApi}")
    private String testApi;

    public String getTestApi() {
        return testApi;
    }
}

然后将其注入到库的另一部分,

@Autowired
ApiEndpoints apiEndpoints;

是否有其他方法可以覆盖此bean?

我在代码中尝试了以下内容,

@Configuration
public class ApiConfiguration {

    @Primary
    @Bean(name = "apiEndpoints")
    public CustomEndpoints getCustomApiEndpoints() {
        return new CustomEndpoints();
    }
}

但这会引发错误,

Field apiEndpoints in co.random.core.RandomService required a bean of type 'co.random.core.ApiEndpoints' that could not be found.

1 个答案:

答案 0 :(得分:2)

该bean被覆盖,但是您定义的新bean不符合预期自动装配的类型。 您的bean必须是(或扩展)ApiEndpoints类型。