09月07日学习杂记(CollectionFactory小例子)

来源:互联网 发布:midas软件 编辑:程序博客网 时间:2024/06/05 16:36

CollectionFactory整理杂记

为了给BeanFactory学习作铺垫,张老师用一个CollectionFactory的一个实例来引导我们,并介绍在通过FACTORY来调用BEAN的时候的工作原理,现在把思路及其部分代码展示如下:


首先是CollectionFactory文件,通过它来解析一个PROPERTIES文件中的内容,并且返回一个BEAN的实例
=========================================================================================
package cn.itcast;

import java.util.*;
import java.io.*;

public class CollectionFactory{
 public static Collection getCollection() throws Exception{
  //定义一个输入流对象IPS,是COLLECTION.PROPERTIES文件地址的一个实例
  InputStream ips = CollectionFactory.class.getResourceAsStream("/cn/itcast/collection.properties" );
  
  //定义一个PROPERTIES用来存放输入流对象(一个PROPERTIES相当于一个HASHMAP,里面既有键,又有键所对应的值)
  Properties props = new Properties();
  //载入输入流对象
  props.load(ips);
  ips.close();
  
  //定义一个字符型变量,用来存储键(CLASS)所对应的值
  String strClassName = props.getProperty("class");
  //得到STRCLASSNAME所对应的类
  Class classCollection = Class.forName(strClassName);
  //用类CLASSCOLLECTION创建一个实例,这个实例必然是一个COLLECTION类型的对象
  Collection objCollection = (Collection) classCollection.newInstance();
  
  //定义一个长字符串,用来存储ELEMENTS所对应的值(一个长字符串)
  String strElements = props.getProperty("elements");
  //用逗号将长字符串拆分为字符型数组
  String [] elements = strElements.split(",");
  
  //遍历字符数组,并把各元素加入OBJCOLLECTION对象中,返回这个对象
  for(String element : elements){
   objCollection.add(element);
  }
  return objCollection;
 }
}

 

其次,是定义一个PROPERTIES文件,它来存储一些类及元素的信息
============================================================
class=java.util.ArrayList
elements=abc,def,ghi

 

最后,写一个主类文件(MainClass)用来加载并测试
================================================
package cn.itcast;

import java.util.Collection;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.BasicConfigurator;

public class MainClass{
 public static void main(String [] args) throws Exception{
  //初始LOG4J的一句话,使用非标准LOG4J所必须的一句话
  BasicConfigurator.configure();
  //从LOGFACTORY中实例化一个LOG对象,(注意传入的参数是MainClass.class)
  Log log = LogFactory.getLog(MainClass.class);
  Collection objCollection = CollectionFactory.getCollection();
  
  //遍历OBJCOLLECTION对象,打印出这里的信息
  for(Object obj : objCollection)
  {
   log.info(obj.toString());
  }
 }
}
 

原创粉丝点击