Spring框架(依赖注入的方式)

目录,更新ing,学习Java的点滴记录

  目录放在这里太长了,附目录链接大家可以自由选择查看--------Java学习目录

Spring知识

  一丶SpringIOC初步认识↓↓↓
第一篇---->初识Spring
  二丶SpringIOC深入↓↓↓
第二篇---->深入SpringIoC容器(一)
第三篇---->深入SpringIoC容器(二)
  三丶装配SpringBean↓↓↓
第四篇---->依赖注入的方式
第五篇---->基于xml装配Bean
第六篇---->基于注解装配Bean
第七篇---->Spring Bean之间的关系
第八篇---->SpringBean的作用域
第九篇---->Spring 加载属性(properties)文件
第十篇---->Spring表达式(SpEL)
第十一篇---->Spring在xml中配置组件扫描
  四丶面向切面编程↓↓↓
第十二篇—>认识SpringAOP及底层原理
第十三篇—>使用@AspectJ注解开发AOP
第十四篇—>使用xml配置开发AOP
  五丶Spring中数据库编程↓↓↓
第十五篇—>数据库编程JdbcTemplate
  六丶Spring事务管理↓↓↓
第十六篇—>Spring事务管理初识
第十七篇—>编程式事务和声明式事务
第十八篇—>事务ACID特性
第十九篇—>事务传播行为
第二十篇—>事务隔离级别

三丶Spring装配Bean

1 依赖注入的方式(3类4种)

1.1 依赖注入

  • 依赖注入DI是指程序运行过程中,若需要调用另一个对象协助时,无需在代码中创建被调用者,而是依赖于外部容器,由外部容器创建后传递给程序.依赖注入是目前最优秀的解耦方式,依赖注入让Spring的Bean之间以配置文件的方式组织在一起,而不是以硬编码的方式耦合在一起的
  • 实际环境中实现IoC容器的方式主要分为两大类,一类是依赖查找,依赖查找是通过资源定位,把对应资源查找回来;另一类就是依赖注入,而Spring主要使用的就是依赖注入.一般而言,依赖注入可以分为3种方式.

1.2 获取Bean对象的方式—getBean()

  • 图解源码
      在这里插入图片描述
  • 使用较多的是前三种,具体使用的体会后面注入时会用到

1.3 通过全类名(反射)(最常用)

1.3.1 构造器注入(常用)
  • 构造器注入依赖于构造方法实现,而构造方法可以是有参数的或者无参数的.Spring也可以采用反射的方式,通过使用构造方法来完成注入,构造器注入在 元素里声明属性,这就是构造器注入的原理.
  • 为了让Spring完成对应的构造注入,我们首先需要创建一个JavaBean类,并创建构造方法,这样在使用构造器注入时就会通过对应信息通过反射的形式去创建对象.如果你对反射机制不熟悉,这篇文章会帮到你—>反射
  • 创建一个User类
      在这里插入图片描述
  • 在全局配置文件applicationContext.xml中配置Bean信息,这里使用了4种常见的构造器注入的方式:无参构造|索引匹配,类型匹配,名称匹配
      在这里插入图片描述
  • 测试方法
      在这里插入图片描述
  • 使用构造器注入缺点也是很明显的,当参数比较少的时候,可读性还可以,但是参数很多时,这种方式就非常复杂了,这时候就应该考虑setter注入了
1.3.2 setter注入(常用)
  • setter注入时Spring中最主流的注入方式.它利用JavaBean规范所定义的setter方法来完成注入,灵活且可读性高.消除了使用构造器注入时出现多个参数的可能性.首先可以把构造方法声明为无参数的,然后使用setter注入为其设置对应的值,其实也是通过Java反射技术来实现的.
  • Setter方式注入也称为属性注入|设值注入,可以给指定Bean注入属性值或者依赖的对象,属性注入使用 元素, 使用 name 属性指定 Bean 的属性名称,value 属性或 子节点指定属性值.
  • 属性注入是实际应用中最常用的注入方式
  • 创建一个User类
      在这里插入图片描述
  • 修改配置文件信息
      在这里插入图片描述
  • 测试结果
      在这里插入图片描述
  • 通过测试结果我们可以很明显看出,Spring"私底下"自动调用了对应属性的setter方法,spring会通过反射调用没有参数的构造方法生成对象,同时通过反射对应的setter注入配置的值.这是Spring最主要的方式,实际中应用最广方.
  • 所以说,如果Bean类中定义了其他带参构造方法,那么必须手动声明一个无参构造器

1.4 通过静态工厂(很少用)

  • 静态工厂顾名思义,就是通过调用静态工厂的方法来获取自己需要的对象,为了让Spring管理所有对象,不能直接通过"工厂类.静态方法()"来获取对象,而是依然通过Spring注入的形式获取.
  • 在配置文件中需要使用factory-method属性指定工厂类中的静态方法
  • 下面是代码示例
  • 工厂类
      在这里插入图片描述
  • User类
      在这里插入图片描述
  • 配置文件
      在这里插入图片描述
  • 测试类
      在这里插入图片描述

1.5 通过实例工厂(很少用)

  • 实例工厂的意思就是获取对象实例的方法不是静态的,所以需要先创建一个工厂类实例,然后在调用该工厂类的实例方法,通过该实例方法再创建我们需要的Bean实例
  • 以下为代码示例
  • 实例工厂类
      在这里插入图片描述
  • User类
      在这里插入图片描述
  • 配置文件
      在这里插入图片描述
  • 测试类
      在这里插入图片描述
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值