gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:48:11 27 4
gpt4 key购买 nike

我正在学习 Spring Core 认证,关于提供的学习资料,我有这个问题,但我无法给出答案。

Why must you have to have a default constructor in your @Configuration annotated class?

我没有在 @Configuration 注释注释的配置类中声明任何构造函数。默认构造函数是父类(super class)继承的那个?或者是什么?为什么我必须有一个默认构造函数而我不能覆盖它?

Tnx

最佳答案

根据official spring javadoc , spring @Configuration 注解的类需要有默认的无参数构造函数

@Configuration classes must have a default/no-arg constructor and may not use @Autowired constructor parameters. Any nested configuration classes must be static

原因是spring使用CGLIB to proxy @Configuration类,在 Spring 中有限制,that classes proxied with CGLIB prior to version 4 are required to have default no-args constructor .

Prior to Spring 4, CGLIB-based proxy classes require a default constructor. And this is not the limitation of CGLIB library, but Spring itself. Fortunately, as of Spring 4 this is no longer an issue. CGLIB-based proxy classes no longer require a default constructor.

关于java - 为什么我必须在 @Configuration 注释注释的 Spring 配置类中有一个默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29073254/

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