Для простого POJO:
@Component
public class Foo
{
private final String string;
public Foo()
{
this("Secondary ComponentScan??");
}
public Foo(String string)
{
this.string = string;
}
@Override
public String toString()
{
return string;
}
}
и эта конфигурация
@Configuration
@ComponentScan(basePackageClasses = Foo.class)
public class TestConfiguration
{
@Primary
@Bean
public Foo foo()
{
return new Foo("Primary bean!!");
}
}
Я бы ожидал следующего теста
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfiguration.class)
public class Test
{
@Autowired
private Foo foo;
@Test
public void test()
{
System.out.println(foo);
}
}
чтобы распечатать Primary Bean!!
, но вместо этого возвращает Secondary ComponentScan??
...
Как получилось? Нигде документация для @Primary говорит, что она не работает с компонентным отсканированным beans!