Spring框架解析
1、写一个spring的demo
测试类
public class TestMain {
public static void main(String[] args) throws Exception {
//1.声明注册bean
BeanDefined beanObj = new BeanDefined();
beanObj.setBeanId("teacher");
beanObj.setClassPath("com.kaikeba.beans.Teacher");
List beanList = new ArrayList();
beanList.add(beanObj);//spring核心配置
//2.声明一个Spring提供BeanFacotory
BeanFactory factory = new BeanFactory();
factory.setBeanDefinedList(beanList);
//3.开发人员向BeanFactory索要实例对象.
Teacher t= (Teacher) factory.getBean("teacher");
System.out.println(t); //com.kaikeba.beans.Teacher@6adwjiwdj
}
}
BeanFactory类,用于解析传入的beanId和创建实例对象
public class BeanFactory {
private List<BeanDefined> beanDefinedList;
public List<BeanDefined> getBeanDefinedList() {
return beanDefinedList;
}
public void setBeanDefinedList(List<BeanDefined> beanDefinedList) {
this.beanDefinedList = beanDefinedList;
}
public Object getBean(String beanId) throws Exception{
Object instance;
for(BeanDefined beanObj:beanDefinedList){
if(beanId.equals(beanObj.getBeanId())){
String classPath = beanObj.getClassPath();
Class classFile= Class.forName(classPath);
//在默认情况下,Spring工厂是通过调用当前类默认工作方法创建实例对象
instance= classFile.newInstance();
return instance;
}
}
return null;
}
}
通过这个例子,告诉了我们Spring的核心就是一个工厂类,在配置文件写的这些标签。 实际上只是作者自己定义的规则,规则里面告诉我们如何把java类信息交给当前spring。spring在运行过程中,在默认的场景下就是使用反射工厂来进行创建的