首先,定义一个简单的pojo,代码如下:
对应的spring配置文件如下:
简单的测试代码如下:
运行Test类,输出如下信息,说明一个简单的spring示例成功运行了。
从简短的Java代码和xml配置文件可知,XmlBeanFactory通过读取xml配置文件组装javabean,当用户调用getBean方法时返回所需对象。为了模仿它的行为,我定义一个简单的beanFactory。
测试代码如下:
运行后输出如下信息:
以上短简代码展现了spring是怎样充当起最简单的bean工厂。下面稍微调整一下代码,分析一下spring会出现怎样的现象。首先把Demo类的无参构造方法改成private。
运行测试代码发现,spring测试结果没有任何差别,但我自定义的MyBeanFactory就报了如下错误信息:
spring如此神奇?非也,是我写的代码过于简陋而已,稍作修改,也是可以直接运行的。
以上是spring容器管理的最纯粹的javabean。spring还支持另外一种bean,叫工厂bean,示例胜千言,请看代码
增加了DemoFactory类后,同时修改spring的配置文件
其它代码不作修改,运行测试代码后,输出结果和原来完全一致。为什么明明配置了ID为demo的class为com.jvk.ken.spring.DemoFactory,返回的结果却是Demo实例呢,这是因为spring检测到DemoFactory是一种实现了FactoryBean接口的特殊bean,返回结果前会调用getObject方法,所以最后得到的是Demo对象。当然,如果我们真的需要得到工厂bean,可以这样写bf.getBean("&demo")。