控制反转:
spring可以直接在配置文件中获取数据生成bean,我们只要获取就行!
根据我学的知道,肯定有两个技术:1 xml配置文件的解析技术;2 反射技术,一个获取数据一个生成类对象。
xml文件中有标签:一般有多个
id是标示class路径下的这个类的,class是类的路径cn.huanglei_jay.reflect.person
将id和class作为一个类的两个成员属性(为了get和set方法)放入list集合中,这个类与class路径的类不是一样
的啊!!!这只是个中间过程,目的是得到class路径下的类的对象
根据class用反射生成的的对象和id放入map集合中,根据id就可以获取对象了xx.getBean("id_name");
啊!只要这样想吧: 这个标签中,目的就是讲class中的东西生成为对象!
*****************************************
反射:加载类,并解剖出类的各个部分
例如一个配置文件:cn.huanglei_jay.re.person run()(反射是做框架的,框架是基于配置文件的)
先要加载cn.huanglei_jay.re这个类,然后看里面有没有run()
加载类代码:
第一种方法:class clazz=class.forName("cn.huanglei_jay.reflect.person");//加载到内存,获得其字节码
2:class clazz=new Person().getClass();
3: class clazz=Person.class;
反射的方法:getConstruct(),getMethod(),getField()
的变量,前面只能是public的
写一个代码:
getConstruct()
是Person(string name),则写(string.class);得到的是什么?
看到spring的时候直接(beanDefinition是一类):Class.forName(beanDefinition.getClassName
()).newInstance();//没有过getConstruct()这一步啊!
getMethod()
得到一个方法,目的是让方法跑起来,用method.invoke(object obj,obiect... args) //第一个是类的对象,后面
是参数
getField():同上,获取字段的值
*****************************************
在PersonServiceBean 类是personService接口(为什么要定义一个接口来继承?MD就是为了体现接口编程)的继承者
,里面有字段和字段的set和get方法,字段可以使对象!
在生成了PersonServiceBean 对象时候,如psb,我们都是这样写的:personService psb=(personService )
xx.getBean("personService");这就显示出了面向接口编程的碉堡了。
ApplicationContext cex=new ClassPathXmlApplicationC
PersonService personService=(PersonService) cex.getBean("personService");
beans.xml中的某句话:
**********************************************
*******************************************