为什么要用内省和BeanUtils以及路径问题

1、原始方法,在一般框架中底层的用法obj.txt-----
cn.Person
id=110
name=“李四”
Demo1.java----
public class Demo1{
      public static void main(String[] args)      	{
		Person p = (Person)getInstance();		System.out.println(p);	}
      public static Object getInstance()      {
      //根据配置文件产生对象的对象并把对象的属性值封装到对象中
      	BufferedReader br = new BufferedReader(new FileReader("obj.txt"));
        String classname = br.readLine();
 	Class clazz = Class.forName(classname);	Constructor constructor = clazz.getConstructor(null);	          	Object o = constructor.newInstance(null);	String line = null;		while((line = br.readLine())!=null)	{		String[] datas = line.split("=");		Field field = clazz.getDeclaredField(data[0]);		if(field.getType()==int.class)		{			field.set(o,Integer.parseInt(datas[1]));		}		else{			field.set(o,datas[1])		}	}	return o;	}
}


 2、内省需要Get、Set方法:是个变态的反射。

3、BeanUtils:底层使用的内省,所以配置文件需要Get\Set方法,同时自动帮我们基本类型转换,如果需要特定类型转换(Date),需要注册转换器(ConvertUtils.register)

   BeanUtils.set(p,"id",id);

4、

绝对路径:一般是包含盘符的,但是由于WIN和LINUX路径标志不同,所以很少用。

相对路径:相当于当前程序的,而在eclipse等都是通过控制台控制。

                  而真正使用的是.class文件,一般在project-name/cn/exmple/Demo.class。project-name/db.properties。

                  例如:Demo.class--->properties.load(new FileReader("db.properties"));

类文件路径:使用classpath的路径找相对应的资源文件。

                      如需要使用到类文件首先要获取到一个class对象。

                      例如:Class clazz = Demo.class;

                      clazz.getResourceAsStream("/db.properties");  //该方法就是使用了类文件路径

                      properties.load();



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值