Я пытаюсь завершить этот класс, который позволит мне переключаться между репозиториями. Я не уверен, как это сделать. Я хочу использовать экземпляры по умолчанию через Spring Boot Injection! Я знаю, что я делаю это неправильно, я не могу передать нулевое значение этим классом init.
@Configuration
public class ApiRepositoryConfig {
@Bean
@ConditionalOnProperty(name = "db.dialect", havingValue = "postgres", matchIfMissing = true)
public ApiRepository apiJpaRepository() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("com.tw.api");
return new ApiJpaRepository(ApiApplication.class, emf.createEntityManager());
}
@Bean
@ConditionalOnProperty(name = "db.dialect", havingValue = "mongo")
public ApiRepository apiMongoRepository() {
return new ApiMongoRepository(null, null);
}
}
Класс ApiJpaRepository
@NoRepositoryBean
public class ApiJpaRepository<T, Id>
extends SimpleJpaRepository<T, Id> implements ApiRepository<T, Id> {
public ApiJpaRepository(Class<T> domainClass, EntityManager entityManager) {
super(domainClass, entityManager);
}
}
Класс ApiMongoRepository
public class ApiMongoRepository<T, Id> extends SimpleMongoRepository<T, Id> implements ApiRepository<T, Id> {
public ApiMongoRepository(MongoEntityInformation<T, Id> metadata, MongoOperations mongoOperations) {
super(metadata, mongoOperations);
}
}
Базовый интерфейс класса
public interface ApiRepository<T, Id> extends CrudRepository<T, Id> {
}
Вот ссылка на проект, если кто-то хочет получить полную картинку, https://github.com/er310/boot-camp/tree/master/api