gpt4 book ai didi

java - 如何让Spring bean扩展一个通用的抽象类?

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:57 25 4
gpt4 key购买 nike

由于遗留问题和其他原因,我无法使用 JPA 存储库。所以我正在尝试为一个项目构建类似的东西。我有类 MyEntityRepo

@Repository
public class MyEntityRepo extends CustomRepository<MyEntity, Integer> {

}

public abstract class CustomRepository<T, ID> {

private static final Logger LOG =LoggerFactory.getLogger(CustomRepository.class);

protected SessionFactory sessionFactory;

private T _clazz;
private String className;

public CustomRepository() {
String className = _clazz.getClass().getName();
if (className.contains(".")) {
className = className.substring(className.lastIndexOf('.') + 1);
}
LOG.info("classname:{}", className);
}
}

但是当我启动项目时,spring 框架无法创建 bean,因为它给出了 NullPointerException,因为 _clazz 字段为空。有人可以解释一下如何实现这一目标吗?

最佳答案

据我了解,主要问题是获取泛型类。

您不需要存储T _clazz;

尝试使用org.springframework.core.GenericTypeResolver

_clazz = (Class<T>) GenericTypeResolver.resolveTypeArgument(getClass(), CustomRepository.class);

the second answer得到逻辑

但实际上 Spring Data 从接口(interface)动态创建代理。请参阅the example

关于java - 如何让Spring bean扩展一个通用的抽象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45569681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com