为什么我必须在@Constructor注释注释的Spring配置类中有一个默认构造函数?

我正在攻读Spring Core认证,并且根据所提供的学习内容,我有这个问题,但我无法给出答案。

为什么必须在@Configuration注释类中使用默认构造函数?

我没有将任何构造函数声明为@Configuration批注注释的配置类。 默认构造函数是超类inheritance的构造函数? 或者是什么? 为什么我必须有一个默认的构造函数,我不能覆盖它?

TNX

根据官方的spring javadoc ,spring @Configuration注释类需要有默认的no-arg构造函数

@Configuration类必须具有default / no-arg构造函数,并且不能使用@Autowired构造函数参数。 任何嵌套配置类都必须是静态的

原因是spring使用CGLIB来代理@Configuration类,并且Spring中存在限制,在版本4之前用CGLIB代理的类需要具有默认的no-args构造函数 。

在Spring 4之前,基于CGLIB的代理类需要一个默认构造函数。 这不是CGLIB库的限制,而是Spring本身。 幸运的是,从第4季开始,这不再是一个问题。 基于CGLIB的代理类不再需要默认构造函数。