Spring -- Spring配置文件详解(Bean实例化的三种方式、IoC(控制反转) 与 DI(依赖注入)、依赖注入详解)

01:Spring配置文件详解(Bean标签的基本配置(id,class)/ 范围配置 / 不同范围时的对象的创建时期 / Bean生命周期配置(生命周期方法) )

02: Spring配置文件详解(Bean实例化的三种方式、IoC(控制反转) 与 DI(依赖注入)、依赖注入详解)

03:Spring配置文件详解(Bean的依赖注入的数据类型(基本类型、引用类型、集合类型))

04: Spring配置文件详解(引入其他配置文件(分模块开发)、小结)

1. Bean实例化的三种方式

在这里插入图片描述


1.1 使用无参构造方法实例化(重点)

在这里插入图片描述


1.2 工厂静态方法实例化

在这里插入图片描述


1.3 工厂实例方法实例化

在这里插入图片描述


2. IoC(控制反转) 与 DI(依赖注入)

  • 控制反转IOC(Inversion of Control),是一种设计思想,DI(Dependency Injection 依赖注入)是IoC的具体实现。
  • 采用XML方式配置Bean的时候,Bean的定义信息是和实现分离的,而采用注解的方式可以把两者合为一体,Bean的定义信息直接以注解的形式定义在实现类中,从而达到了零配置的目的。
  • 控制反转是一种通过描述(xml或注解)并通过第三方去生产或获取特定对象的方式。在spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)
  • 所谓的IoC,一句话搞定 : 对象由Spring 来创建,管理,装配 !

3. 依赖注入详解


3.1 Bean的依赖注入入门

  1. 创建UserDaoImpl
    在这里插入图片描述

  2. 创建UserServiceUserService内部在调用UserDaosave()方法
    在这里插入图片描述

  3. UserServicelmplUserDaoImpl交给Spring Ioc容器管理
    在这里插入图片描述

  4. 从Spring容器中获得UserService进行操作
    在这里插入图片描述

  5. 分析
    目前UserService实例和UserDao实例都存在与Spring容器中,当前的做法是在容器外部获得UserService实例和UserDao实例,然后在程序中进行结合。
    在这里插入图片描述


3.2 Bean的依赖注入分析

因为UserServiceUserDao都在Spring容器中,而最终程序直接使用的是UserService,所以可以在Spring容器中,将UserDao设置到UserService内部。

在这里插入图片描述


3.3 Bean的依赖注入(Dependency Injection,DI)概念

在这里插入图片描述


3.4 Bean的依赖注入方式(构造方法、set方法)


3.4.1 set方法注入

  1. 在UserServicelmpl中添加setUserDao方法
    在这里插入图片描述

  2. 配置Spring容器调用set方法进行注入
    在这里插入图片描述

  3. 测试代码

    public static void main(String[] args) {
        //解析beans.xml文件 , 生成管理相应的Bean对象
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        //getBean : 参数即为spring配置文件中bean的id .
        UserServiceImpl user = (UserServiceImpl) context.getBean("userService");
        user.save();
    }
  1. 测试结果:
    在这里插入图片描述

3.4.2 set方法注入的另外一种方式:P命名空间注入

P命名空间注入本质也是set方法注入,但比起上述的set方法注入更加方便,主要体现在配置文件中,如下:

  1. 首先,需要引入P命名空间:
    在这里插入图片描述
  2. 修改注入方式
    在这里插入图片描述
  3. 运行上面的测试代码:
    在这里插入图片描述

3.4.3 构造方法注入

  1. 创建有参构造
    在这里插入图片描述

  2. 配置Spring容器调用有参构造时进行注入
    在这里插入图片描述

  3. 运行上面的测试代码:
    在这里插入图片描述



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeJiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值