id:唯一性标识,不允许重复
class:Bean的全限定名称
scope:指对象的作用范围,取值如下
prototype:每次通过getBean获取对象都是新的对象
当scope为singleton或者默认时,通过getBean得到的两个对象地址是相同的,而为prototype时地址不一样,说明创建了两个不同的对象。
在bean标签中通过以上方法绑定相应的方法名,来执行初始化和销毁时的方法(这两个方法在UserDaoImpl中创建)
在com.itheima下创建一个factory包,里面创建一个含有静态方法getUserDao的StaticFactory类,返回一个UserDaoImpl对象
然后在bean中更改class为StaticFactory的位置,并且添加 factory-method=“getUserDao” 来确定具体的方法。
在com.itheima下创建一个factory包,里面创建一个DynamicFactory类
但因为这的方法不是静态方法,如果需要调用则必须先获取对象
所以不能像工厂静态方法实例化时那样直接更改bean,应该新建一个id为factory的bean,class为DynamicFactory的全限定名,让spring容器通过无参构造创建工厂对象,再通过另一个获取userDao的bean来使用上一个bean中的方法。