Здравствуйте, уважаемые разработчики!
Использую спринг недавно, поэтому появился вопрос.
Есть проект, написанный на спринг, использовалась конфигурация через Java.
Класс конфигурации:
@SpringBootApplication
@ComponentScan
public class Application extends SpringBootServletInitializer {
// ...
@Bean
@Primary
@ConfigurationProperties(prefix = "datasource.one")
DataSource one() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "datasource.two")
DataSource two() {
return DataSourceBuilder.create().build();
}
@Bean
DAO dao(DAOImpl dao) {
return dao;
}
// ...
}
Класс DAOImpl:
@Component
public class DAOImpl implements DAO {
@Autowired
@Qualifier("one")
private DataSource grad;
@Autowired
@Qualifier("two")
private DataSource phone;
//... сложная бизнес-логика для работы с бд
}
Соответственно, если я хочу внедрить DataSource бины из конфигурации, то я должен объявить класс DAOImpl как компонент, поэтому в runtime в контейнере получается два бина (DAO интерфейс из конфигурации Application и DAOImpl), которые смотрят на одну и ту же реализацию. Как правильно сконфигурировать бины в данном случае?
Спасибо огромное!