を:(私はそれをテストしていない)
@Autowired
MongoRepository mongoRepository;
@Autowired
CrudRepository crudRepository;
@Value("isMongo")
boolean isMongo;
private Repository actualRepository;
@PostConstruct
public void init() {
actualRepository = isMongo ? mongoRepository : crudRepository;
}
あなたは、いくつかの他のBeanにこのリポジトリが必要な場合は、おそらくあなたもBeanを作成することができます。私はこのような何かを試してみました非常に実行可能です。 Spring Bootでは、profilesでこれを行います。プロファイルを使用すると、@Repository
(および他の@Components
)を有効または無効にすることができます。
@Repository
@Profile("mongo")
public interface MyMongoRepo extends MongoRepository<SomeObject, String> {
}
@Repository
@Profile("mysql")
public interface MyMysqlRepo extends CrudRepository<SomeObject, String> {
}
明らかに、必要なプロファイル名を使用できます。プロファイルは、コマンドラインまたはapplication.propertiesファイルを介して設定できます。
spring.profiles.active=mysql
「MongoRepository」、「CrudRepository」のサンプルコード、およびそれらを注入する場所を指定する必要があります。 – alirabiee