Java Spring-@Primary对@ComponentScan失败?
对于简单的POJO:Java Spring-@Primary对@ComponentScan失败?,java,spring,testing,configuration,spring-test,Java,Spring,Testing,Configuration,Spring Test,对于简单的POJO: @Component public class Foo { private final String string; public Foo() { this("Secondary ComponentScan??"); } public Foo(String string) { this.string = string; } @Override public Stri
@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);
}
}
打印出primarybean代码>但它返回辅助组件扫描???
而不是
为什么?任何地方的文档都没有说它对组件扫描bean失败 原因是两个bean实际上具有相同的名称foo
,因此在内部一个bean定义被另一个bean定义覆盖,本质上@bean
的定义被@ComponentScan
扫描的定义覆盖
修复方法只是给其中一个取一个不同的名称,您应该看到@Primary
bean被注入的正确行为
@Primary
@Bean
public Foo foo1()
{
return new Foo("Primary bean!!");
}
或
@Component("foo1")
public class Foo
{
..