spring 动态加载bean

放虎归山 发布于 2017/02/09 14:37
阅读 717
收藏 0

框架:SSH

问题:使用classloader进行class加载,然后注册到spring容器中,如果加载进来的bean引用了其他自定义类,会报异常:异常内容为:

java.lang.NoClassDefFoundError: com/test/entity/User (wrong name: com/test/UserService)

部分代码如下:

        Class<?> clazz = .....
        String beanName = clazz.getSimpleName().toLowerCase();
        DefaultListableBeanFactory beanFactory = (DefaultListableBeanFactory) SpringContextUtil.getApplicationContext()
        .getAutowireCapableBeanFactory();
        GenericBeanDefinition definition = new GenericBeanDefinition();
        definition.setBeanClass(clazz);    //设置类
        definition.setScope("singleton");       //设置scope
        definition.setLazyInit(false);          //设置是否懒加载
        definition.setAutowireCandidate(true);  //设置是否可以被其他对象自动注入
        beanFactory.registerBeanDefinition(beanName, definition);

        Object bean = SpringContextUtil.getBean(beanName);
         Method method = bean.getClass().getMethod(methodName);
        Object result = method.invoke(bean, param);

但如果使用Junit进行测试,则没有任何问题,初步估计跟tomcat容器有关,但是不明白具体原因,求指教

加载中
返回顶部
顶部