Spring框架_01(模拟BeanFactory)

思路:将要创建的对象和创建对象所需的类存放在properties文件中,通过将properties文件读取出来,将对象和创建对象所需的类以键值对的方式存在HashMap中,实现对象工厂的模拟。

1.创建properties文件,并存入对象和创建对象所需的类
	accountService=com.jingsheng.service.impl.AccountServiceImpl
	accountDao=com.jingsheng.dao.impl.AccountDaoImpl
2.模拟对象工厂,创建BeanFactory类
	//1.创建properties对象
	private static Properties props;
	//2.定义一个Map,用于存放创建的对象和所需的类,称为容器
	private static Map<String,Object> beans;
	//3.在静态代码块中将properties中的值取出,存在Map中
	static{
	try{
		//实例化对象
		props = new Properties();
		//获取Properties文件的流对象
		InputStream in = BeanFactory.class.getClassLoader.getResourceAsStream("bean.properties");
		props.load(in);
		//实例化容器
        beans = new HashMap<String, Object>();
        //取出配置文件所有的key
        Enumeration keys = props.keys();
        //遍历枚举
        while (keys.hasMoreElements()){
            //取出每个key
            String key = keys.nextElement().toString();
            //根据key获取value
            String beanPath = props.getProperty(key);
            //反射创建对象
            Object value = Class.forName(beanPath).newInstance();
            //把key和value存入容器
            beans.put(key,value);

        }

    } catch (Exception e) {
        throw new ExceptionInInitializerError("初始化properties失败");
    }

	}
	//用于从Map中通过key取出对象
	public static Object getBean(String beanName){
    return beans.get(beanName);
}
	}

创建业务层接口IAccountService,接口定义方法,业务层AccountServiceImpl实现接口的方法,测试对象是否能够执行方法

	public void saveAccount() {
    System.out.println("保存了账户");
}

创建一个测试类,测试从中取出对象

public class test{
	public static void main(String[] args){
IAccountService as = (IAccountService)BeanFactory.getBean("accountService");
as.saveAccount();
}
}
方法执行成功说明对象工厂模拟成功。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值