2018-07-20——Spring内部类注入时构造函数踩坑

在spring中注入内部类,有可能会遇到如下异常信息:

No default constructor found; 
nested exception is java.lang.NoSuchMethodException: xx.xxx.xx.xx外部类$xx内部类.<init>()

看样子是说找不到构造函数,于是我把 无/全 参构造函数 都加上了,可依旧报相同错误。
于是我想,是不是Spring在注入内部类的时候比较特殊?百度一下,果然有坑!

内部类注入方式一:添加内部类构造函数参数

我们遇到上面的错误是因为非静态的内部类默认的构造函数有一个参数,这个参数指向其外部类的实例,所以我们需要给此内部类的bean添加constructor-arg节点,并指向外部类即可,类似配置如下:

    <bean class="xx.xx.外部类" id="外部类id">
        <property name="hands">
            <list>
                <bean class="xx.xx.外部类$内部类">
                    <constructor-arg ref="外部类id"></constructor-arg>
                    <property name="内部类属性1" value="**"/>
                </bean>
            </list>
        </property>
    </bean>

注意: 内部类的类名由外部类的全称+$+内部类的名称

内部类注入方式二:将内部类修改为static

在内部类名class 前加上static即可。

声明:
此文参考并摘抄一部分自:https://www.cnblogs.com/lichmama/p/5670185.html
如有侵犯,请联系作者删除。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容