是否可以在不初始化Spring上下文的情况下创建Spring Data自动实现的存储库?

时间:2019-02-15 10:03:18

标签: java spring spring-boot dependency-injection

我有这个Spring Data存储库。自定义方法由Spring Data自动实现(使用反射,代理或其他方式)

public interface UserRepository extends CrudRepository<User, String> {
    //custom methods
}

我在某个地方有这个

@Autowired
UserRepository userRepository;

现在,我摆脱了Spring上下文,并停止使用基于Spring的依赖注入。我想知道是否可以在不初始化Spring上下文的情况下创建UserRepository的实例。像这样:

UserRepository userRepository = new UserRepository();

显然,这不起作用。但是我正在寻找类似的东西。根据{{​​3}},由于Spring使用代理运行时,因此无法查看存储库的生成代码。

有没有办法实现我想要的?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。您需要使用RepositoryFactorySupport类来创建存储库。

就我而言,我使用的是Spring Data的Elasticsearch和ElasticsearchRepository,因此对我有用:

ElasticsearchRepositoryFactory factory = new ElasticsearchRepositoryFactory(jestTemplate);
MyRepo myRepo = factory.getRepository(MyRepo.class);