Czy istnieje sposób na zastąpienie komponentu bean odkrytego przez skanowanie składników?

Mam klasę konfiguracji java, która zapewnia bezpośrednio fooBean i barBean poprzez skanowanie składników.

@Configuration
@ComponentScan(basePackages = { "com.blah" })
public class Config {

    @Bean
    public FooBean fooBean {
        return new FooBean();
    }
}

i chcę go ponownie wykorzystać w przypadkach testowych i muszę zastąpić ziarna fasolą:

@Configuration
@Import(Config.class)
public class TestConfig {

    @Bean
    public FooBean fooBean {
        return new FooBeanMock();
    }

    @Bean
    public BarBean barBean {
        return new BarBeanMock();
    }
}

(tutaj nie ma większego sensu ponowne używanie Config, ale w rzeczywistości mam 1000 Beans i muszę wyśmiać tylko kilka)

Tutaj fooBean zostaje przesłonięty, ale nie barBean.

Skipping loading bean definition for %s: a definition for bean " + "'%s' already exists. This is likely due to an override in XML.

Istnieje również oficjalny problem:https://jira.springsource.org/browse/SPR-9682

czy ktoś zna jakieś obejście w celu zastąpienia komponentu bean odkrytego przez skanowanie składników?

biorąc pod uwagę, że fasola jest kodem starszym i nie można go modyfikować, a dla jego zależności nie ma ustawników (atrybuty prywatne + @Resource).

questionAnswers(2)

yourAnswerToTheQuestion