Spring 三种创建Bean的方式 第一种——默认构造函数创建 第二种——使用某个类中的方法创建 第三种——使用工厂中的静态方法创建对象
在spring配置中使用bean标签,配置好id和class后,没有其他属性和标签,采用的就是默认构造函数创建bean对象,此时如果类中没有默认构造函数,则对象无法创建。
但如果类是封装在jar包里面,我们无法通过修改源码的方法提供默认构造函数,例如我们创建一个InstanceFactory类
若我们用第一种方式配置bean标签
我们想要的是工厂的实例,却得到了AccountServiceImpl的实例,这样逻辑错误了,所以这引出了我们第二种方法
第二种——使用某个类中的方法创建
这两行的意思是:我们现在通过第一种方式把工厂存入我们的spring容器了
而accountService是怎么来的呢,是通过spring容器中instanceFactory里的getAccountService方法获取的
运行一下client,我们可以看到
第三种——使用工厂中的静态方法创建对象
我们创建一个staticFactory,里面的方法是静态的
若我们工厂的方法是静态的话,就写上class属性指定factory,再用factory-method指定静态方法
run一下clent,prefect