(报错解决)No bean class specified on bean definition

关键词

spring Java eclipse bean 多例模式 prototype 懒加载 lazy-init

写在前面

  • 功能简述:对于多例模式的懒加载配置是否生效的测试。
  • 刚接触,摸索中,低级错误,只是做个记录,轻喷。

(有错误)Xml配置文件(片段)


            
        
        
            
        

运行的测试代码

package test;

import java.util.Calendar;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import instance.BeanClass;
import instance.Person;
import instance.User;

public class TestInstance {    
    //对于多例模式,默认懒加载,即便设置lazy-init="false"也无效
    @Test
    public void test06(){
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        System.out.println("获取对象前");
        //参数是xml中待创建的对象的id
        BeanClass bc3 = (BeanClass)context.getBean("instanceFactoryInstancePrototypeExample");
        System.out.println(bc3+bc3.message);    
    }
}

解决

  • 思路:检查xml配置文件
  • 原因:xml配置文件有误。
  • 解决:最后一个bean标签少写了factory-method属性。

(正确的)Xml配置文件(片段)


            
        
        


        
        

包结构

image.png

(补充)BeanInstanceFactory类

package instance;

public class BeanInstanceFactory {
        public BeanInstanceFactory(){
            System.out.println("我是一个实例工厂");            
        }
        public BeanClass createBeanClassInstance(){
            return new BeanClass("调用实例工厂方法实例化Bean");
        }
}

(补充)BeanClass类

package instance;

public class BeanClass {
    public String message;    
    public BeanClass() {
        this.message = "构造方法实例化Bean";
    }
    public BeanClass(String message) {
        this.message = message;
    }
}

运行结果

image.png

参考

org.springframework.beans.factory.BeanCreationException:No bean class specified on bean definition

你可能感兴趣的:((报错解决)No bean class specified on bean definition)