Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将SpringBean注入JpaRepositoryFactoryBean_Spring_Hibernate_Spring Data - Fatal编程技术网

如何将SpringBean注入JpaRepositoryFactoryBean

如何将SpringBean注入JpaRepositoryFactoryBean,spring,hibernate,spring-data,Spring,Hibernate,Spring Data,我有自己的定制Spring数据公共存储库,以便为所有Spring数据存储库提供公共行为。我所需要的就是在创建存储库时修改EntityManager。但我无法将SpringBean注入到JpaRepositoryFactoryBean中,因为该bean是通过新操作符创建的 public class BasicJpaRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable> ex

我有自己的定制Spring数据公共存储库,以便为所有Spring数据存储库提供公共行为。我所需要的就是在创建存储库时修改EntityManager。但我无法将SpringBean注入到JpaRepositoryFactoryBean中,因为该bean是通过新操作符创建的

public class BasicJpaRepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable> extends JpaRepositoryFactoryBean<T, S, ID> {

 @Autowired
 private SomeService service; // - it does not work 

  @Override
  protected RepositoryFactorySupport createRepositoryFactory(EntityManager em) {
    // do some logic here
    service.doSmth();  
    return new CommonRepositoryFactory<>(em);
  }

  private static class CommonRepositoryFactory<T, I extends Serializable> extends JpaRepositoryFactory {

    private final EntityManager em;

    public CommonRepositoryFactory(EntityManager em) {
      super(em);
      this.em = em;
    }

    @SuppressWarnings("unchecked")
    protected Object getTargetRepository(RepositoryMetadata metadata) {
      JpaEntityInformation entityInformation = getEntityInformation(metadata.getDomainType());
      return new CommonRepositoryImpl(entityInformation, em);
    }

    protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
      return CommonRepositoryImpl.class;
    }
  }

}
public类BasicJpaRepositoryFactoryBean扩展了JpaRepositoryFactoryBean{
@自动连线
私有SomeService服务;//-它不工作
@凌驾
受保护的RepositoryFactorySupport createRepositoryFactory(EntityManager em){
//在这里做一些逻辑
service.doSmth();
返回新的CommonRepositoryFactory(em);
}
私有静态类CommonRepositoryFactory扩展了JpaRepositoryFactory{
私人最终实体经理em;
公共存储工厂(实体管理器em){
超级(em);
this.em=em;
}
@抑制警告(“未选中”)
受保护对象GetTargetPository(RepositoryMetadata元数据){
JpaEntityInformation entityInformation=getEntityInformation(metadata.getDomainType());
返回新的CommonRepositoryImpl(entityInformation,em);
}
受保护类getRepositoryBaseClass(RepositoryMetadata元数据){
返回CommonRepositoryImpl.class;
}
}
}

在该类或从该类扩展的类中实现一个setter。

扩展该类并在扩展中包含一个setter您使用的是哪个spring版本?。为什么通过
新建
创建
JpaRepositoryFactoryBean
?(这是不可避免的吗?)