您可以在您的項目中創建一個配置,該配置將構建一個註釋爲@Primary
bean的新數據源。這個新的數據源將是datasource1
,它將在春季注入新的數據源工廠方法。這裏有你的工作示例。
的配置:
@SpringBootApplication
public class BeanSpringExampleApplication
{
@Bean(name = "dataSource1")
public FakeDataSource dataSource1()
{
return new FakeDataSource("dataSource1");
}
@Bean(name = "dataSource2")
public FakeDataSource dataSource2()
{
return new FakeDataSource("dataSource2");
}
@Bean
@Primary
public FakeDataSource primaryDataSource(
@Qualifier("dataSource1") FakeDataSource dataSource1)
{
return dataSource1;
}
}
這裏你可以看到三種豆(使用FakeDataSource
類),模擬你的情況。這個primaryDataSource
bean工廠方法只返回dataSource1
(它僅僅是一個數據源選擇器)。
的FakeDataSource
只是一個佔位符,使例子可以運行:
public class FakeDataSource
{
private final String fakeProperty;
public FakeDataSource(String id)
{
fakeProperty = id;
}
/**
* @return the fakeProperty
*/
public String getFakeProperty()
{
return fakeProperty;
}
}
最後,它證明了一切測試工作:
@RunWith(SpringRunner.class)
@SpringBootTest
public class BeanSpringExampleApplicationTests
{
@Autowired
private FakeDataSource fakeDataSource;
@Test
public void should_AutowirePrimaryDataSource() throws Exception
{
assertEquals("dataSource1", fakeDataSource.getFakeProperty());
}
}
你能在項目中創建一個新的數據源豆並注入你的'datasource1'作爲參數?然後,你可以用'@ Primary'註釋這個方法,並簡單地返回'datasource1'。請讓我知道,如果我明白你的問題。 –
@MikeWojtyna我試過了,但它不起作用。我得到消息說我有兩個bean,Spring不能決定使用哪一個。 –
使用@Qualifier來區分您的bean並命名您的主要bean。我會盡力爲你準備一個有用的例子。 –