我们有一个支持多个数据库的Spring REST应用程序。我们的REST API在SQL Server上,但是很少有客户端在MongoDB和MySQL上。我们必须以支持所有3个数据库的方式来实现DAO层。

我们定义了3个spring配置文件-mssql,mongodb和mysql。默认配置文件为mssql。我们还为这些配置文件提供了3种不同的数据源。

我们的方法:我们为DAO接口提供3种不同的实现。如果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();
}

08-25 22:16