1.Spring上下文创建bean对象
1)通过Spring上下文创建出来的bean对象都是单例的,无论我们获取多少次,获取到的都是同一个bean对象。
2)无论我们是否主动去获取bean对象,Spring上下文一加载就会创建bean对象。
2. bean的作用域
1)单例(singleton):在整个应用程序中,只创建bean的一个实例。
2)原型(prototype):每次注入或通过Spring上下文获取的时候,都会创建一个新的bean实例。
3)会话(session):在web应用中,为每个会话创建一个bean实例。
4)请求(request):在web应用中,为每个请求创建一个bean实例。
作用域为prototype时的情况:
3. 自动装配中定义的bean的作用域
@Component
//@Scope("prototype")
//@Scope(scopeName = "prototype") scope的name形式
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) //常量的形式
public class CompactDis2 {
public CompactDis2() {
System.out.println("CompactDis2的无参构造方法……"+this.toString());
}
}
4. javaConfig装配中定义bean的作用域
5. Spring中bean对象的加载策略
1)xml配置文件方式
在Spring配置文件中,默认的加载策略是“积极加载”(bean对象的lazy-init=“false”)。当lazy-init="true"时,按需加载(延迟加载/懒加载)。
<bean id="compactDis" class="com.zm.demo.soundsystem.CompactDis" scope="singleton" lazy-init="true"></bean>
2)注解方式的加载策略的设置
在类上写@Lazy,表示采用延迟加载策略,不写,默认为“积极加载”。
注意:延迟加载策略只与作用域为singleton的有效。
3)javaConfig发过誓的加载策略设置
6. 对象的初始化和销毁
1)在spring的xml配置文件中配置初始化和销毁方法的方式
<bean destory-method="销毁方法的方法名" init-method="初始化方法的方法名"></bean>
2)自动装配中初始化方法和销毁方法的配置
在初始化方法上添加 @PostConstruct
标签,在销毁方法上添加 @PostConstruct
标签。
3)javaConfig方式装配初始化方法和销毁方法
在初始化方法上添加 @PostConstruct
标签,在销毁方法上添加 @PostConstruct
标签。
7. 工厂方法创建bean对象
1)通过静态工厂方式创建bean对象
<bean id="标识符" class="创建bean对象的工厂类的全类名" factory-method="方法名"></bean>
<!-- 1.创建bean对象的工厂类的实例-->
<bean id="标识符" class="创建bean对象的工厂类的全类名"></bean>
<!--2.创建需要的实例对象-->
<bean id="标识符" factory-bean="工厂类对象的标识符" factory-method="实例工厂方法名"></bean>
来源:https://blog.csdn.net/qq_40845019/article/details/99696445