Spring心得

来源:互联网 发布:excel数据透视表的作用 编辑:程序博客网 时间:2024/05/18 02:53

1.通过反射机制设置一个类中属性值:
 Class cls = Class.forName("net.xiaxin.beans.User");
 Method mtd = cls.getMethod("setName",new Class[]{String.class});
 Object obj = (Object)cls.newInstance();
 mtd.invoke(obj,new Object[]{"Erica"});
 return obj;
2.通过Spring Wrapper来操纵一个Bean:
 Object obj = Class.forName("net.xiaxin.beans.User").newInstance();
 BeanWrapper bw = new BeanWrapperImpl(obj);
 bw.setPropertyValue("name","Eria");
3.那么他和下面这样写有什么不一样呢?比下面这样写有什么好处呢?
 net.xiaxin.beans.User user = new net.xiaxin.beans.User();
 user.setName("Erica");
 
第一种和第二种写法可以把类名和方法名都写到配置文件当中去,在代码当中动态的加载设定某一个Bean的某一个属性,
而第三种写法就实现不了。而第二种方法由于引入了Spring Wrapper,写的更简洁,也更容易理解。

Bean Wrapper和Bean Factory是独立操作呢,还是一块操作呢?
Bean Factory是一个Bean的管理容器,将以前的po通过xml文件表示出来,然后在程序中动态的加载某一个Bean
例如:InputStream is = new FileInputStream("bean.xml");
   XmlBeanFactory factory = new XmlBeanFactory(is);
   Action action = (Action)factory.getBean("TheAction");
其中TheAction是在bean.xml定义好的bean,现在就通过BeanFactory得到了,如果和Bean Wrapper结合使用,
应不应该是这样呢:
   InputStream is = new FileInputStream("bean.xml");
   XmlBeanFactory factory = new XmlBeanFactory(is);
   Object obj = Class.forName(factory.getBean("TheAction"));//通过反射机制进行Bean加载
   BeanWrapper bw = new BeanWrapperImpl(obj);
   bw.setProertyValue("name","");//设置通过BeanFactory得到的TheAction这个Bean中的属性值
BeanWrapper是操作单个Bean的,而BeanFactory是一个Bean容器,这样就可以通过BeanFactory中得到某一个要
操作的Bean,在由BeanWrapper来通过反射机制加载这个Bean,和设置这个Bean中的属性。
不知道这样的理解对不对!

ApplicationContext:ApplicationContext覆盖了BeanFactory的所有功能,并提供了更多的特性:
 1:国际化支持 
 2:资源访问
 3:事件传播
 4:多实例加载
那这样说,是不是BeanFactory是不是完全可以不用了?  

原创粉丝点击