1.使用构造函数的方法时创建对象的(用来管理一些直接可以new出来的对象)
id:创建对象的唯一标识
class:要创建对象的全限定名
scope:标识要创建对象的范围 单例(只创建一次 每次都是调用的这个创建的)还是多例(可以创建多次 每次都不是同一个对象 地址值不一样)
singleton表示单例(默认) 创建核心容器的时候创建
prototype表示多例 每次调用的时候创建
init-method:表示绑定的方法是对象创建的生命周期方法(也即是当对象被创建的时候就运行调用此方法) 通常用来读取一些配置文件
destroy=method:表示绑定的方法是对象销毁的生命周期方法(也即是当对象被销毁的时候就运行调用此方法)通常在里面用来关闭一些资源
***注意:核心容器中单例对象:随着核心容器创建而创建,销毁而销毁***
<bean id="userService" scope="singleton" class="com.ls.service.UserService"></bean>
(相当于此处调用通过class的全限定名发射获取对象,然后底层把对象管理起来,然后用id标记起来)
2.静态工厂方式创建对象(用来管理一些使用工具类创建的对象) 此处工厂方法是静态的
id:创建的对象的唯一标识
class:表示静态工厂(工具类)的全限定名
factory-method:表示静态工厂中创建对象的那个方法
(相当于先通过class的全限定名反射获取的工具类对象,然后通过对象调用该类中的的factory-method方法获取创建的对象,底层把对象管理起来,然后用id标记起来)
<bean id="userService" class="com.ls.Factory.BeanFactory" factory-method="getUserService"></bean>
3.实例工厂创建对象 (用来管理一些使用实例工厂创建的对象) 此处工厂方法是非静态的 不能直接调用方法
就需要先使用构造方法获取此实例工厂对象 然后通过工厂对象调用方法 需要1和2混着使用
1.使用bean标签获取实例工厂对象 交给核心容器管理
id:实例工厂对象的唯一标识(第二部需要使用此id)
class:实例工厂的全限定名
2.调用实例工厂对象的方法
id:创建对象的唯一标识
factory-bean:表示要调用的实例工厂对象id (要调用那个工厂对象的方法,就填写那个工厂对象的id)
factory-method:表示实例工厂中创建对象的那个方法
联合使用(先使用构造方法获取此实例工厂对象 然后通过工厂对象调用方法)
<bean id="beanFactory" class="com.ls.Factory.BeanFactory"></bean>
<bean id="userService" factory-bean="beanFactory" factory-method="getUserService"></bean>