J2EE高级开发框架小课程之Spring框架2——Spring容器作用域,生命周期,Spring管理对象之间依赖关系

Spring容器作用域

Spring创建对象的作用域:Spring在创建对象时,默认只创建一个(单例模式)
scope:
singleton(默认 单例) 构造器就一次,结果true
prototype(原型 多例)构造器被执行两次,结果false,每次获取时Spring容器都会创建一个对象
session (一次会话)
request (一次请求范围)
验证:
(以user为例)
1.在Spring容器applicationContext.xml中
使用user里的无参构造器创建对象

<bean id="user" class="com.dlxy.entity.User"></bean>	 

2.在JUnitTest.java中
在测试中获取两个user对象,判断两个对象的地址值是否相同(如果一样就是同一个对象)

 public void test2(){
        //2.从Spring配置文件获取User对象
        User user=ac.getBean("user",User.class);
        System.out.println(user);

        User user1=ac.getBean("user",User.class);
        System.out.println(user1);

        System.out.println(user ==user1);
    }

运行结果是true,只创建了一个对象,user构造器只创建一次

Spring容器生命周期

(以user为例)
1.在User.java(User类)中添加两个方法(初始化和销毁方法)

 public void init(){  
        System.out.println("int初始化");
    }
    public void destroy(){
        System.out.println("destory销毁");
    }

2.配置两个方法
init-method=“init”:配置初始化方法,初始化方法在构造方法之后执行,构造方法执行几次,初始化方法就执行几次。
destroy-method=“destroy”:销毁方法(只针对单例模式生效),在Spring容器销毁后执行该方法。
初始化方法
在Spring容器applicationContext.xml中
结果:初始化方法在构造方法之后执行,构造方法执行几次,初始化方法就执行几次
在这里插入图片描述
销毁方法
1.Spring容器销毁时:
在JUnitTest.java中
手动调用销毁方法
1)强制转换成AbstractApplicationContext才有销毁方法
2)ac1.close();

  @Test
    public void test2(){
        //2.从Spring配置文件获取User对象
        User user=ac.getBean("user",User.class);
        System.out.println(user);

        User user1=ac.getBean("user",User.class);
        System.out.println(user1);

        System.out.println(user ==user1);

        //强制转换成子类型AbstractApplicationContext对象
        AbstractApplicationContext ac1 =(AbstractApplicationContext)ac;
        //AbstractApplicationContext对象提供销毁方法,ApplicationContext没有
        ac1.close();
    }

2.在Spring容器applicationContext.xml中

	<bean id="user" class="com.dlxy.entity.User"
		  scope="singleton" init-method="init" destroy-method="destroy"></bean>

效果:出现销毁方法,说明销毁方法被调用,注意时单例模式生效
在这里插入图片描述
以上:Spring创建对象讲解完成

Spring管理对象之间依赖关系

就是如何给属性赋值
那user举例,我们有对象但属性都没有值都是null

IOC和DI

1.什么是IOC(Inversion Of Control 控制反转):对象之间的依赖关系应该由容器来建立。(将控制权由程序员转交给Spring容器)
之前是自己创建dao对象,调用dao中的方法,现在Spring能创建对象如何给属性赋值?
在这里插入图片描述
2.什么是DI(Dependency Injection 依赖注入):容器可以通过调用set方法或者构造器来建立对象之间的依赖关系。
set注入,构造器注入:给类中的属性赋值的
注:
IOC是目标,DI是手段。使用DI实现IOC。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值