У нас есть приложение Spring REST, которое поддерживает несколько баз данных. Наши API REST находятся на SQL Server, но некоторые из них находятся на MongoDB и MySQL. Мы должны реализовать наш уровень DAO таким образом, чтобы он поддерживал все 3 базы данных.
Мы определили три профиля пружины - mssql, mongodb и mysql. По умолчанию профиль будет mssql. Мы также предоставили 3 разных источника данных для этого профиля.
Наш подход: Мы предоставляем 3 различных реализации нашего интерфейса DAO. Если StaffingDao - это интерфейс, то у нас есть реализация следующим образом:
@Profile("mssql")
public class StaffingDAOMSSQLImpl implements StaffingDao
@Profile("mongodb")
public class StaffingDAOMongoImpl implements StaffingDao
@Profile("mysql")
public class StaffingDAOMySQLImpl implements StaffingDao
Это хороший подход?
Любая помощь будет оценена по достоинству.
Спасибо
@Profile
- действительный подход.
Другим подходом может быть инициализация @Conditional
bean. Может быть что-то вроде этого
@ConditionalOnResource(resources = "classpath:mysql.properties")
@Bean(name="staffingDao")
public StaffingDao staffingDao(){
return new StaffingDAOMySQLImpl();
}