Spring配置细节(配置bean的作用域、配置懒加载、spring中bean的生命周期)

配置bean的作用域:

  • 默认状态下绝大多数是单例,在bean配置里加入scope="prototype"就可以改变单例状态变成多例状态。

配置好bean以后测试

<bean id="mybean" class="cn.itshow.MyBean">//单例,测试结果为true
<bean id="mybean" class="cn.itshow.MyBean" scope="prototype">//测试结果为false,说明为多例
@Autowired
private MyBean mybean1;
@Autowired
private MyBean mybean2;
@Test
public void testBean(){
	System.out.println(mybean1 == mybean2);//true  -- false
}

配置懒加载

BeanFactory默认是懒加载方式(在获取时才去创建)
ApplicationContext默认是迫切加载(在创建容器时就创建对象)
单个bean需要懒加载,直接在bean中加入 lazy-init=“true”。

<bean  id="other" class="cn.it.show.OtherBean" lazy-init="true"></bean>

全部bean需要懒加载是在spring的申明约束后面加上default=lazy-init=“true”

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd d" default-lazy-init="true">

Spring中bean的生命周期

Spring中Bean的生命周期:Spring中管理的对象从创建到销毁的一个过程。

  1. 实例化和初始化:

    实质是Spring容器帮我们调用了无参构造(创建对象)和指定的初始化方法(一般做初始化工作)
    如果Spring容器是BeanFactory,在对象使用的时候调用【懒加载】
    如果Spring容器是ApplicationContext,默认在创建容器的时候调用【迫切加载】
    注意:单例才是迫切加载。
    多例不是,多例的对象还是懒加载(因为它不知道创建多少个对象,只有在获取的时候才知道你需要多少个对象)

  2. 销毁:
    实质上也是Spring容器去调用指定销毁方法,但是仅仅是的调用了这个方法,并没有销毁这个对象,可以在销毁方法中做一些销毁和清理工作【释放资源,关流,关闭连接】。
    这个销毁方法一般是在容器关闭的时候调用,但是在Springtest中用完之后会自动关闭容器,就会自动调用销毁方法
    一般情况下初始化和销毁不用管,框架中会自动进行管理。

发布了23 篇原创文章 · 获赞 1 · 访问量 163

猜你喜欢

转载自blog.csdn.net/weixin_45528650/article/details/105560796