美文网首页
NoSuchBeanDefinitionException: N

NoSuchBeanDefinitionException: N

作者: 酷酷的美猴王 | 来源:发表于2018-11-20 15:30 被阅读0次

    背景:

    想动态的获取某个类中某个方法,并执行。

    过程:

    写了个抽象类

    @Slf4j
    public abstract class ChoosePartBuilder {
       @Resource
        private SomeAdaptor someAdaptor;
        public void MethodA(){
        someAdaptor.getMethodB();
        }
    }
    

    有一个继承类

    package com.crm.service.choose
    @Service
    @Slf4j
    public class AllChoosePartBuilder extends ChoosePartBuilder {
    @Override
        public void MethodA() {
        }
    }
    

    通过在数据库中配置类的路径com.crm.service.choose.AllChoosePartBuilder,根据class.forName(),获取到类,通过getDeclaredMethod获取方法,然后invoke执行。
    报错,No qualifying bean of type someAdaptor availabe
    开始以为是因为抽象类的原因,不能直接@Resource,然后换成SpringContextUtils.getBean。。还是不行。。最后发现。原来是class.forName()搞的鬼!!因为在forName时相当于new了一个类,不是启动时加载到spring容器中的类,所以someAdaptor是空!!

    解决:

    在项目启动时,加载个map<path,ChoosePartBuilder>,使用时,根据路径获取到对应的实体,就可以啦!

    相关文章

      网友评论

          本文标题:NoSuchBeanDefinitionException: N

          本文链接:https://www.haomeiwen.com/subject/wchxqqtx.html