我们知道在写spring代码的时候,我们先在xml文件里面配置好bean,然后在代码中可以使用。
原理:
首先是IOC容器解析xml文件,然后找出所有的bean和对应的全类名。
然后通过反射构造对象 Class.forName(“全类名”);和 newInstance(); 构建出该对象,如果有<property>
的话,就使用setter方法来创建进去(这可能也是spring的bean类必须是JavaBean的原因)。现在这个对象还是在IOC容器内的。
之后我们在测试代码中使用 ApplicationContext来取出我们需要的bean。
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
//c就是配置文件中<bean>的id
Category category=(Category)context.getBean("c");
所以原理总的来说就是xml文件的解析+反射+工厂模式