@Primary
bean으로 주석 된 새 데이터 소스를 빌드하는 구성을 프로젝트에서 작성할 수 있습니다. 이 새로운 데이터 소스는 봄까지 새로운 데이터 소스 팩토리 메소드에 삽입 될 datasource1
이 될 것입니다. 여기에 실제 예제가 있습니다.
는 config : 다음은 상황을 시뮬레이션 (FakeDataSource
클래스를 사용하여) 세 가지 콩을 볼
@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;
}
}
. primaryDataSource
bean factory 메소드는 단순히 dataSource1
을 반환합니다 (단순한 데이터 소스 선택 자일뿐입니다).
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());
}
}
이 프로젝트에 새로운 데이터 소스 콩을 만들 수
FakeDataSource
은 실행 가능한 예제를 만들기 위해, 단지 자리 표시 자입니다 'datasource1'을 인수로 주입합니까? 그런 다음이 메소드에'@ Primary'를 사용하여 주석을 달고'datasource1' 만 리턴하면됩니다. 너의 문제를 이해하면 알려줘. –
@MikeWojtyna 시도했지만 작동하지 않습니다. 나는 두 가지 콩을 가지고 있다는 메시지를 받았고 Spring은 어느 것을 사용할 것인지 결정할 수 없습니다. –
@Qualifier를 사용하여 bean을 구별하고 기본 bean의 이름을 지정하십시오. 나중에 당신을 위해 실례를 준비하려고 노력할 것입니다. –