如何将SpringBean注入JpaRepositoryFactoryBean
我有自己的定制Spring数据公共存储库,以便为所有Spring数据存储库提供公共行为。我所需要的就是在创建存储库时修改EntityManager。但我无法将SpringBean注入到JpaRepositoryFactoryBean中,因为该bean是通过新操作符创建的如何将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
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
?(这是不可避免的吗?)