У меня есть следующие классы: com.foo.pkgx:
@Component public class A {}
@Component public class B {
@Autowired A a;
}
com.foo.pkgy:
@Component public class C {
@Autowired B b;
}
В зависимости от IE: C -> B ->A
При выполнении следующей спецификации спока:
@Configuration
@ComponentScan(basePackages = ["com.foo.pkgy"])
class Config {
def mockFactory = new DetachedMockFactory()
@Bean
B b() {mockFactory.Mock(B)};
}
@ContextConfiguration(classes = Config)
class CSpec extends Specification {
@Autowired
C c;
def "sanity"() {
expect: c
}
}
Тест не прошел инициализацию:
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'c':
Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: com.foo.pkgx.B com.foo.pkgy.C.b;
nested exception is org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'b':
Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire field: com.foo.pkgx.A com.foo.pkgx.B.a;
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [com.foo.pkgx.A] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Я прочитал это как «попытался соединить A с B, ноне удалось".Я не ожидал, что Б подвергнется автоматической разводке, так как она высмеивается.
Может ли кто-нибудь пролить свет?
Спасибо!