bean属性
name属性
<bean id="userService" name="userService2, userService3" class="com.impl.UserServiceImpl"/>
使用逗号(,)隔开,再应用程序中
UserService userService = (UserService) applicationContext.getBean("userService2");
通过getBean([name]),来获取对象。如果没有name,getBean则通过ID来获取Bean。
scope属性
<bean id="userService-t" scope="singleton" class="com.impl.UserServiceImpl"/>
<bean id="userService-t" scope="prototype" class="com.impl.UserServiceImpl"/>
用于控制创建的对象是不是单例
单例模式下对象的创建是在构造spring容器的时候创建(先创建,用的时候直接给你)
Prototype模式下对象的创建实在获取的时候(用的时候再给你创建)
声明周期
<bean id="userService-t" init-method="init" destroy-method="destroy" class="com.impl.UserServiceImpl"/>
init-method、destroy-method取值都是bean对应类中的方法名,用于控制bean再容器内的声明周期;
-
注意事项:
-
当scope=“singleton”时,spring容器中有且仅有一个对象,init方法在创建容器时仅执行一次
-
当scope=“prototype”时,spring容器要创建同一类型的多个对象,init方法在每个对象创建时均执行一次
-
当scope=“singleton”时,关闭容器会导致bean实例的销毁,调用destroy方法一次
-
当scope=“prototype”时,对象的销毁由垃圾回收机制gc()控制,destroy方法将不会被执行
-
bean对象创建方式
(1)factory-bean
-
名称:factory-bean
-
类型:属性
-
归属:bean标签
-
作用:定义bean对象创建方式,使用静态工厂的形式创建bean,兼容早期遗留系统的升级工作
-
格式:
<bean class="FactoryClassName" factory-method="factoryMethodName"></bean>
-
取值:工厂bean中用于获取对象的静态方法名
-
注意事项:
- class属性必须配置成静态工厂的类名
(2)factory-bean,factory-method
-
名称:factory-bean,factory-method
-
类型:属性
-
归属:bean标签
-
作用:定义bean对象创建方式,使用实例工厂的形式创建bean,兼容早期遗留系统的升级工作
-
格式:
<bean factory-bean="factoryBeanId" factory-method="factoryMethodName"></bean>
-
取值:工厂bean中用于获取对象的实例方法名
-
注意事项:
-
使用实例工厂创建bean首先需要将实例工厂配置bean,交由spring进行管理
-
factory-bean是实例工厂的beanId
-