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

来源:互联网 发布:mac book可以安装vs么 编辑:程序博客网 时间:2024/06/05 21:17
1、原始方法,在一般框架中底层的用法obj.txt-----
cn.Personid=110name=“李四”
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