spring Bean Scopes(作用域)
参考官方文档
1.5Bean Scopes
1、Singleton
:单例模式(默认):一个Spring容器中只有一个Bean的实例,此为Spring的默认配置,全容器共享一个实例。
①:在容器启动的时候创建对象
2、Prototype
:多例模式,每次调用新建一个Bean的实例。
②:在每次获取的时候创创建对象
3、Request:Web项目中,给每一个http request新建一个Bean实例。
4、Session:Web项目中,给每一个http session新建一个Bean实例。
<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 LifeCycle(生命周期)
指定初始化和销毁方法
1、bean的生命周期
①:bean的创建,初始化,销毁的过程;
2、参考servlet的生命周期 实例化,初始化,服务,销毁
①:容器管理bean的生命周期
②:我们也可以自定义初始化和销毁方法;容器在bean进行当前生命周期的时候来调用我们自定义的初始化和销毁方法
——指定init-method和destroy-method方法
3、bean的生命周期
①:构造(对象创建)
①)①):单实例
①)②):多实例
4、初始化
①:对象创建完成,并赋值好,调用初始化方法
②:销毁
②)①):单实例:容器关闭的时候
②)②):多实例:容器不会管理这个bean;容器不会调用销毁方法;
InitializingBean和DisposableBean
InitializingBean
DisposableBean
Spring bean自动装配
参考官方文档:
1.4.5. Autowiring Collaborators
依赖注入的本质是装配,装配是依赖注入的具体行为
spring可以在上下文中自动寻找,并自动给bean装配属性。
1、自动装配四种方式
①:none:不自动装配(默认)
②:byName
:会自动在容器上下文中,通过setXxx方法中的xxx去查找相同id的bean
③:byType
:会自动在容器上下文中,通过对象属性类型相同的bean
④:constructor:构造方法根据类型自动装配
2、自动装配配置方式
①:全局配置default-autowire
②:局部配置autowire
<beans xmlns="Index of /schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="Index of /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>