类不包含用于自动装配的匹配构造函数
Posted
技术标签:
【中文标题】类不包含用于自动装配的匹配构造函数【英文标题】:Class doesn't contain matching constructor for autowiring 【发布时间】:2014-03-15 19:40:32 【问题描述】:我有两节课
public abstract class AbstractDAO<T>
private final MyExecutor<T> myExecutor;
private final Class<T> clazz;
public AbstractDAO(MyExecutor<T> myExecutor, Class<T> clazz)
this.myExecutor = myExecutor;
this.clazz = clazz;
和
@Component
public class MyDAOImpl extends AbstractDAO<Manager>
private final SessionManager sessionManager;
private final MyExecutor<Manager> myExecutor;
@Autowired
public MyDAOImpl(SessionManager sessionManager, MyExecutor<Manager> myExecutor)
super(myExecutor, Manager.class);
this.sessionManager = sessionManager;
this.myExecutor= myExecutor;
我在抽象类的定义中遇到一个错误,说:“”。
我所做的只是为 AbstractDAO 的构造函数添加了一个额外的构造函数参数,它是一个类。我需要这个,因为我没有找到一种方法在运行时从 T 中检测到这一点(stackflow 搜索说没有)。
我该如何解决这个问题?如何传递只能在实现类中确定的Class信息?
非常感谢
【问题讨论】:
这是一个编译时错误。没有堆栈空间。谢谢。 您可能想阅读:***.com/questions/3153546/… 和 ***.com/questions/19414734/spring-autowired-usage 您的代码,如图所示,编译良好。 只有在抽象类 AbstractDAO 的构造函数中添加 @Autowired 时才会编译。否则,它不会。我想知道为什么会这样。非常感谢。 我认为你误解了什么是编译。您的错误不是编译错误(除非您的问题严重缺少某些内容)。 【参考方案1】:这是 IntelliJ 中的一个错误,已在 13.1 中修复。 http://youtrack.jetbrains.com/issue/IDEA-120977
【讨论】:
以上是关于类不包含用于自动装配的匹配构造函数的主要内容,如果未能解决你的问题,请参考以下文章
Proguard - PersistenceException:构造函数与类不匹配
Spring-boot,无法自动装配类。未找到默认构造函数引发异常