类不包含用于自动装配的匹配构造函数

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,无法自动装配类。未找到默认构造函数引发异常

Spring 3.2注释自动装配多个构造函数

如何自动装配在 SpringBoot 应用程序中具有带参数的构造函数的组件

Spring Boot 构造函数自动装配异常