Bileşen taraması ile fooBean doğrudan ve barBean sağlayan bir java yapılandırma sınıfım var.Bileşen taramasıyla keşfedilen bir fasulyeyi geçersiz kılacak bir yol var mı?
@Configuration
@ComponentScan(basePackages = { "com.blah" })
public class Config {
@Bean
public FooBean fooBean {
return new FooBean();
}
}
ve ben test durumda yeniden kullanmak istiyorum ve mocks ile fasulye değiştirmeniz gerekiyor: çok duyu Config'i yeniden yapmaz
@Configuration
@Import(Config.class)
public class TestConfig {
@Bean
public FooBean fooBean {
return new FooBeanMock();
}
@Bean
public BarBean barBean {
return new BarBeanMock();
}
}
(burada, ama gerçek hayatta 1000 tane fasulye var ve sadece birkaç tane alay etmem gerekiyor)
Burada fooBean geçersiz kılınır, ancak barBean değil.
Skipping loading bean definition for %s: a definition for bean " + "'%s' already exists. This is likely due to an override in XML.
bunun için resmi bir mesele de var: https://jira.springsource.org/browse/SPR-9682
birileri bileşeni taraması tarafından keşfedilen bir fasulye etkisiz hale getirmenin bir geçici çözüm biliyor mu? Fasulyenin eski kod olduğunu ve değiştirilemediğini ve bağımlılıkları için NO belirleyicileri olduğunu (özel nitelikler + @Resource) göz önünde bulundurarak
Onları ana yapılandırmada atlayamıyorum. çünkü fasülyeye ihtiyacım var ve bu fasülyeyi somutlaştırmak için başka bir olasılık görmüyorum çünkü "Fasulye eskiden olduğu ve değiştirilemediği göz önüne alındığında ve bağımlılıkları için hiçbir belirleyici yok (özel nitelikler + @Resource). ". Ana konfigürasyonu ithal eden test konfigürasyonunda, herhangi bir anlam ifade etmemektedir, çünkü ithal edilen ana konfigürasyondan gelen taramayı herhangi bir şekilde gerçekleştirecektir. – mmoossen
Ana yapılandırmanızı iki parçaya ayırabilirsiniz: 1) bileşen taraması 2) diğer her şey. Ve sonra test yapılandırmanızda sadece ikinci olanı içe aktarın. Bu yüzden testler için aleve bağlı bileşen tarama ayarlarını geçersiz kılacaksınız. –
bunu yapabilir. fikir için teşekkürler. deneyeceğim. – mmoossen