-
Singleton:单例模式(默认):一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例。
在容器启动的时候创建对象(调用无参的构造方法 ) -
Prototype:多例模式,每次调用新建一个Bean的实例。
在每次获取的时候创创建对象 -
Request:Web项目中,给每一个http request新建一个Bean实例。
-
Session:Web项目中,给每一个http session新建一个Bean实例。<bean id="dog"
<bean id="dog" class="com.zking.springdemo.scope.Dog" scope="singleton"></bean>
<bean id="dog2" class="com.zking.springdemo.scope.Dog" scope="prototype"></bean>
Spring bean自动装配
参考官方文档:1.4.5. Autowiring Collaborators
依赖注入的本质是装配,装配是依赖注入的具体行为
spring可以在上下文中自动寻找,并自动给bean装配属性。
-
自动装配四种方式
-
none:不自动装配(默认)
-
byName:会自动在容器上下文中,通过setXxx方法中的xxx去查找相同id的bean
-
byType:会自动在容器上下文中,通过对象属性类型相同的bean
-
constructor:构造方法根据类型自动装配
-
-
自动装配配置方式
-
全局配置default-autowire
-
局部配置autowire
-
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="byType">
<bean id="userDao" class="com.zking.springdemo.dao.impl.UserDaoImpl"></bean>
<bean id="userDao2" class="com.zking.springdemo.dao.impl.UserDaoOracleImpl"></bean>
<bean id="userService" class="com.zking.springdemo.service.impl.UserServiceImpl"
autowire="byType">
</bean>
</beans>
spring bean LifeCycle(生命周期)
指定初始化和销毁方法
-
bean的生命周期
-
bean的创建,初始化,销毁的过程;
-
参考servlet的生命周期 实例化,初始化,服务,销毁
-
-
容器管理bean的生命周期
-
我们也可以自定义初始化和销毁方法;容器在bean进行当前生命周期的时候来调用我们自定义的初始化和销毁方法
-
指定init-method和destroy-method方法
-
-
-
bean的生命周期
-
构造(对象创建)
-
单实例
-
多实例
-
-
初始化
-
对象创建完成,并赋值好,调用初始化方法
-
-
销毁
-
单实例:容器关闭的时候
-
多实例:容器不会管理这个bean;容器不会调用销毁方法;
-
-